ติดตั้ง PostGIS และ TIGER Data ใน Ubuntu 12.04


9

มีใครบางคนที่สามารถเขียนบทสรุปสั้น ๆ ได้จนทำให้คนงี่เง่าไม่พอใจที่จะติดตั้ง postgis และโหลดข้อมูล Tiger ระดับชาติบน Ubuntu ฉันได้ลองใช้แนวทางสองสามอย่างคือhttp://wiki.bitnami.com/@api/deki/pages/302/pdfแต่ฉันไม่มีโชคมาก ฉันขอโทษสำหรับลักษณะสิ้นสุดของคำถามนี้


คุณใช้ PostGIS รุ่นใด เป็นรุ่นที่บรรจุด้วย 12.04 หรือคุณได้อัปเกรดหรือไม่ หากคุณสามารถเรียกใช้ PostGIS ล่าสุดได้ 2.1.1 TIGER Geocoder ที่มาพร้อมกับรุ่นนั้นดีกว่ารุ่นที่ทำงานกับ PostGIS 1.5
HeyOver มี

ฉันใช้ 2.1.1 แน่นอน ฉันเปิดใช้งานส่วนขยายที่จำเป็นทั้งหมดแล้ว (fuzzystrmatch, postgis, postgi_tiger_geocoder, postgis_topology) และสคีมาเสือ ตอนนี้ฉันเพียงแค่ต้องอัปโหลดข้อมูลสำมะโนประชากรแห่งชาติ
stat_novice

คำตอบ:


12

เนื่องจากคุณมี PostGIS 2.1.1 คุณจะก้าวไปข้างหน้าของเกม ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งแล้วมันเป็นสิ่งที่จะดาวน์โหลดข้อมูลจากไซต์ Census FTP

สร้างไดเรกทอรี gisdata ด้วย:

sudo mkdir /gisdata

ใช้คำสั่งchown และ chgrpเพื่อเปลี่ยนความเป็นเจ้าของและกลุ่มของ / gisdata เพื่อให้ผู้ใช้ปกติของคุณสามารถอ่านและเขียนไปยัง / gisdata

เริ่ม psql และเชื่อมต่อกับฐานข้อมูลของคุณ เมื่ออยู่ใน psql ให้ใช้

\a

และ

\t

เพื่อให้ผลลัพธ์ของแบบสอบถามถูกจัดรูปแบบอย่างถูกต้อง

ฉันลืมส่วนนี้ในตอนแรก! ก่อนที่คุณจะสามารถใช้สคริปต์โหลดเดอร์คุณต้องทำการทำความสะอาดบ้านก่อน สิ่งแรกคือเพื่อให้แน่ใจว่าสคีเสือนั้นอยู่ในเส้นทางการค้นหา ถัดไปตรวจสอบค่าใน tiger.loader_platform และ tiger.loader_variables ทั้งสองตารางควบคุมตัวแปรสำหรับโหลดเดอร์สคริปต์เช่นชื่อผู้ใช้และรหัสผ่านของคุณ ฉันมักจะแก้ไขใน PGAdmin ถัดไปคุณจะต้องเรียกใช้สคริปต์ที่เติมตารางการค้นหาและบิตของพื้นหลังอื่น ๆ ที่ geocoder จำเป็นต้องใช้ ก่อนอื่นให้ตั้งค่าไฟล์เอาต์พุต:

\o nation_generator.sh

จากนั้นเรียกใช้:

SELECT loader_generate_nation_script('sh'); 

จากนั้นออกจาก psql และเรียกใช้ไฟล์:

sh ./nation_generator.sh

จากนั้นกระโดดกลับสู่ psql และพิมพ์:

\o loader_script.sh

เพื่อส่งออกผลลัพธ์ของแบบสอบถามไปยัง textfile ที่เรียกว่า loader_script.sql จากนั้นดำเนินการฟังก์ชันที่สร้างสคริปต์โหลดเดอร์:

SELECT loader_generate_script(ARRAY['DC','RI'], 'sh');

นี่คือเคียวรีที่เอาต์พุตจะถูกเปลี่ยนทิศทางไปที่ loader_script.sql แทนที่ 'DC' และ 'RI' ด้วยตัวย่อสองตัวของสถานะที่คุณต้องการดาวน์โหลด

ออกจาก psql และรันสคริปต์ด้วยคำสั่งนี้:

sh ./loader_script.sh

การดำเนินการนี้จะดาวน์โหลดไฟล์สำหรับสถานะที่คุณเลือกคลายซิปและนำเข้าข้อมูลไปยังฐานข้อมูล PostGIS ของคุณ


HeyOverThere: ขอบคุณสำหรับการตอบกลับอย่างละเอียด ขณะที่อยู่ใน psql การพิมพ์ "\ o loader_script.sql" จะส่งผลให้เกิดคำสั่งปฏิเสธสิทธิ์ ความคิดเกี่ยวกับสาเหตุใด ฉันเข้าสู่ระบบในฐานะผู้ใช้ postgres
stat_novice

ขออภัย! ฉันลืมคนส่วนใหญ่ไม่ใช้บัญชีผู้ใช้ปกติเพื่อเรียกใช้ psql คุณจะต้องบันทึกสคริปต์ที่ผู้ใช้ postgres ของคุณมีสิทธิ์เขียน ที่ง่ายที่สุดคือการใช้ \ o /tmp/loader_script.sql ซึ่งจะบันทึกไฟล์เป็น / tmp จากนั้นให้เรียกใช้ไฟล์มันจะเป็น sh ./tmp/loader_script.sql
HeyOver มี

นั่นได้ผล! แม้ว่าตอนนี้ฉันได้รับข้อความแสดงข้อผิดพลาด "ไม่มีฟังก์ชั่นที่ตรงกับชื่อและประเภทของอาร์กิวเมนต์ที่กำหนดคุณอาจต้องเพิ่ม casts ประเภทชัดเจน" เมื่อเรียกใช้งานเคียวรีสำหรับโหลดเดอร์สคริปต์ นอกจากนี้ถ้าฉันจำได้อย่างถูกต้องฉันจะต้องแก้ไขไฟล์นั้นเพื่อเพิ่มชื่อผู้ใช้และฐานข้อมูลของฉัน?
stat_novice

ขอโทษด้วย! ฉันก็ลืมไปเช่นกัน! สิ่งแรกที่ต้องตรวจสอบคือเส้นทางการค้นหาของฐานข้อมูลของคุณตรวจสอบให้แน่ใจว่ามีสคีมาเสืออยู่ สิ่งที่สองในการตรวจสอบอยู่ใน schema ของเสือมีตาราง, tiger.loader_platform และ tiger.loader_variables ที่บอกสคริปต์ของคุณรหัสผ่านของคุณและข้อมูลอื่น ๆ ใช้ PGAdmin เพื่อแก้ไข สุดท้ายก่อนที่จะรันสคริปต์โหลดเดอร์ของคุณให้เรียกใช้ฟังก์ชัน loader_generate_nation เพื่อตั้งค่าตารางทั้งหมดที่ geocoder ต้องการ ฉันจะแก้ไขคำตอบของฉันเพื่อเติมลงในช่องว่างเหล่านี้
HeyOver มี

HeyOverThere: คุณเป็นเทพเจ้าในหมู่ชาย / หญิง เกือบจะใช้งานได้แล้ว ทั้งสคริปต์ประเทศและรัฐทำงานและกำลัง FTP เว็บไซต์สำรวจสำมะโนประชากรและดูเหมือนจะดึงไฟล์ แต่หลังจากทั้งคู่เสร็จสมบูรณ์พวกเขาออกข้อความแสดงข้อผิดพลาดต่อไปนี้: "loader_script.sql: 408: loader_script.sql: / usr / pgsql- 9.0 / bin / psql: ไม่พบ " นอกจากนี้ยังไม่มีข้อมูลใน schema tiger_data ฉันต้องแก้ไขไฟล์โดยเฉพาะบรรทัดนี้หรือไม่: "export PGBIN = / usr / pgsql-9.0 / bin"
stat_novice

0

มีคำตอบมากมายในเว็บไซต์นี้ที่เกี่ยวข้องกับการติดตั้ง PostGIS นี่เป็นหนึ่งในนั้นและโซลูชันของ Nick Gauthierก็ยอดเยี่ยมเช่นกัน เพื่อย้ำคำแนะนำที่เพียงพอในนั้น ...

การติดตั้ง PostGIS นั้นง่ายขึ้นมากใน Ubuntu 12.04 และใหม่กว่า โดยทั่วไปมีสองวิธีในการดำเนินการดังนี้: การติดตั้งจาก PPA และการสร้างจากแหล่งที่มา ต่อไปนี้คือเชลล์สคริปต์ทั่วไปที่ฉันใช้สำหรับแต่ละกรณี

กำลังติดตั้งจาก PPA ...ฉันใช้ubuntugis-unstablePPA

# Add Ubuntu GIS PPA and update, upgrade
sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable -y && sudo apt-get update && sudo apt-get upgrade

# Install PostGIS
sudo apt-get install postgis

# Recommends: sudo apt-get install postgresql-9.1-postgis-2.0

# Configure template database
POSTGIS_TEMPLATE=postgis-2.0.1
POSTGRESQL_VER=9.1
sudo su -c "createdb $POSTGIS_TEMPLATE" - postgres 
sudo -u postgres psql -d postgres -c "UPDATE pg_database SET datistemplate='true' WHERE datname='$POSTGIS_TEMPLATE';" 
sudo -u postgres psql -d $POSTGIS_TEMPLATE -f /usr/share/postgresql/$POSTGRESQL_VER/contrib/postgis-2.0/postgis.sql
sudo -u postgres psql -d $POSTGIS_TEMPLATE -c "GRANT ALL ON geometry_columns TO PUBLIC;"
sudo -u postgres psql -d $POSTGIS_TEMPLATE -c "GRANT SELECT ON spatial_ref_sys TO PUBLIC;"

กำลังสร้างจากแหล่งที่มา ...นี่ถือว่า PostGIS 2.1 และ PostgreSQL 9.1 แต่อาจเป็นรุ่นล่าสุดของทั้งคู่ เปลี่ยนแปลงตามความจำเป็น

cd /usr/local/ && sudo mkdir postgis && sudo chown [username] postgis && cd postgis
wget http://download.osgeo.org/postgis/source/postgis-2.1.0.tar.gz
tar -xzvf postgis-2.1.0.tar.gz && rm postgis-2.1.0.tar.gz && cd postgis-2.1.0
sudo ./configure --with-projdir=/usr/local/proj/v4.7.0/
make
sudo make install

# Configure template database
POSTGIS_TEMPLATE=postgis-2.1.0
POSTGRESQL_VER=9.1
sudo su -c "createdb $POSTGIS_TEMPLATE" - postgres 
sudo -u postgres psql -d postgres -c "UPDATE pg_database SET datistemplate='true' WHERE datname='$POSTGIS_TEMPLATE';" 
sudo -u postgres psql -d $POSTGIS_TEMPLATE -f /usr/share/postgresql/$POSTGRESQL_VER/contrib/postgis-2.0/postgis.sql
sudo -u postgres psql -d $POSTGIS_TEMPLATE -c "GRANT ALL ON geometry_columns TO PUBLIC;"
sudo -u postgres psql -d $POSTGIS_TEMPLATE -c "GRANT SELECT ON spatial_ref_sys TO PUBLIC;"

คุณจะสังเกตเห็นธีมระหว่างสอง; ยังคงจำเป็นต้องสร้างฐานข้อมูลเทมเพลตและเติมข้อมูลในspatial_ref_sysตาราง

ในฐานะที่เป็นสำหรับการตั้งค่ากับ TIGERทำตามคำแนะนำสำหรับการโหลดข้อมูล TIGER ในเอกสาร 2.x PostGIS, บทที่ 2


อาร์เธอร์: ฉันติดตั้ง PostGIS 2.1 แล้วและ postgis.sql ไม่มีอยู่ในไดเรกทอรีต่อไปนี้:
/usr/share/postgresql/9.3/contrib/postgis-2.1
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.