Cài đặt dữ liệu PostGIS và TIGER trong Ubuntu 12.04


9

Ai đó có thể viết một bản tóm tắt mặc dù đã làm ngơ hướng dẫn của kẻ ngốc để cài đặt postgis và tải dữ liệu Tiger quốc gia trên Ubuntu? Tôi đã thử một vài hướng dẫn, cụ thể là http://wiki.bitnami.com/@api/deki/pages/302/pdf , nhưng tôi không gặp nhiều may mắn. Tôi xin lỗi vì bản chất kết thúc mở của câu hỏi này.


Phiên bản nào của PostGIS bạn đang chạy? Đây có phải là phiên bản được đóng gói với 12.04 hoặc bạn đã nâng cấp? Nếu bạn có thể muốn chạy PostGIS mới nhất, 2.1.1. Bộ mã hóa địa lý TIGER đi ​​kèm với phiên bản đó tốt hơn nhiều so với phiên bản hoạt động với PostGIS 1.5.
HeyOverThere

Tôi thực sự đang sử dụng 2.1.1. Tôi có tất cả các tiện ích mở rộng cần thiết được bật (fuzzystrmatch, postgis, postgi_tiger_geocoder, postgis_topology) và lược đồ hổ. Bây giờ, tôi chỉ cần tải lên dữ liệu điều tra dân số quốc gia.
stat_novice

Câu trả lời:


12

Vì bạn có PostGIS 2.1.1, bạn đi trước trò chơi. Hãy chắc chắn rằng bạn đã cài đặt wget, đó là những gì sẽ tải xuống dữ liệu từ trang web Điều tra dân số FTP.

Tạo một thư mục gonomata với:

sudo mkdir /gisdata

Sử dụng các lệnh chown và chgrp để thay đổi quyền sở hữu và nhóm / gonomata để người dùng bình thường của bạn có thể đọc và ghi vào / gonomata.

Bắt đầu psql và kết nối với cơ sở dữ liệu của bạn. Một lần trong psql sử dụng

\a

\t

sao cho kết quả của truy vấn được định dạng chính xác.

Tôi đã quên phần này ban đầu! Trước khi bạn có thể sử dụng tập lệnh loader, bạn cần thực hiện một số thao tác dọn dẹp nhà cửa. Điều đầu tiên là đảm bảo lược đồ hổ nằm trong đường dẫn tìm kiếm của bạn . Tiếp theo, kiểm tra các giá trị trong tiger.loader_pl platform và tiger.loader_variables. Hai bảng này kiểm soát các biến cho tập lệnh trình tải như tên người dùng và mật khẩu của bạn. Tôi thường chỉ chỉnh sửa chúng trong PGAdmin. Tiếp theo, bạn sẽ cần chạy một tập lệnh chứa các bảng tra cứu và các bit khác về độ tốt của nền mà trình mã hóa địa lý sẽ cần. Đầu tiên đặt tệp đầu ra:

\o nation_generator.sh

sau đó chạy:

SELECT loader_generate_nation_script('sh'); 

Sau đó thoát psql và chạy tệp:

sh ./nation_generator.sh

Sau đó nhảy trở lại vào psql và gõ:

\o loader_script.sh

để xuất kết quả của truy vấn thành tệp văn bản có tên là loader_script.sql. Sau đó thực hiện chức năng tạo tập lệnh bộ tải:

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

Đây là truy vấn có đầu ra sẽ được chuyển hướng đến loader_script.sql. Thay thế 'DC' và 'RI' bằng hai chữ viết tắt của các trạng thái bạn muốn tải xuống.

Thoát khỏi psql và chạy tập lệnh với lệnh này:

sh ./loader_script.sh

Thao tác này sẽ tải xuống các tệp cho (các) trạng thái bạn chọn, giải nén chúng và nhập dữ liệu vào cơ sở dữ liệu PostGIS của bạn.


HeyOverThere: Cảm ơn bạn đã phản hồi chi tiết. Trong khi ở psql, việc gõ "\ o loader_script.sql" dẫn đến một tuyên bố từ chối cấp phép. Bất cứ ý tưởng như tại sao? Tôi đang đăng nhập với tư cách người dùng.
stat_novice

Lấy làm tiếc! Tôi quên rằng hầu hết mọi người không sử dụng tài khoản người dùng thông thường của họ để chạy psql. Bạn sẽ cần lưu tập lệnh ở đâu đó mà người dùng postgres của bạn có quyền viết. Dễ nhất là sử dụng \ o /tmp/loader_script.sql sẽ lưu tệp vào / tmp. Sau đó, để chạy tệp, nó sẽ là sh ./tmp/loader_script.sql.
HeyOverThere

Điều đó đã làm việc! Mặc dù, hiện tại tôi đang nhận được thông báo lỗi này "Không có chức năng nào khớp với các loại đối số và tên đã cho. Bạn có thể cần phải thêm các kiểu phôi rõ ràng." khi thực hiện truy vấn cho tập lệnh loader. Ngoài ra, nếu tôi nhớ chính xác, tôi sẽ phải chỉnh sửa tệp đó, phải thêm tên người dùng và db của tôi?
stat_novice

Xin lỗi đôi! Tôi cũng quên mất điều đó! Điều đầu tiên cần kiểm tra sẽ là đường dẫn tìm kiếm của cơ sở dữ liệu của bạn, đảm bảo lược đồ hổ nằm trong đó. Điều thứ 2 cần kiểm tra là trong lược đồ tiger có các bảng, tiger.loader_pl platform và tiger.loader_variables cho biết kịch bản của bạn mật khẩu và thông tin khác. Sử dụng PGAdmin để chỉnh sửa chúng. Cuối cùng, trước khi chạy tập lệnh trình tải của bạn, hãy chạy hàm loader_generate_nation để thiết lập tất cả các bảng mà trình mã hóa địa lý cần. Tôi sẽ chỉnh sửa câu trả lời của mình để điền vào những chỗ trống này.
HeyOverThere

HeyOverThere: Bạn là một vị thần giữa nam / nữ. Điều này gần như hoạt động. Cả tập lệnh quốc gia và tiểu bang đều chạy và họ đang FTP trang web điều tra dân số và dường như đang truy xuất các tệp, nhưng sau khi cả hai hoàn thành, họ đưa ra một số báo cáo lỗi sau: "loader_script.sql: 408: loader_script.sql: / usr / pssql- 9.0 / bin / psql: không tìm thấy ". Hơn nữa, không có dữ liệu trong lược đồ tiger_data. Tôi có cần chỉnh sửa các tệp này không, cụ thể là dòng này: "export PGBIN = / usr / pssql-9.0 / bin"?
stat_novice

0

Có nhiều câu trả lời trên trang web này liên quan đến việc cài đặt PostGIS. Đây là một , và giải pháp của Nick Gauthier cũng rất tuyệt vời. Để nhắc lại lời khuyên phong phú trong đó ...

Việc cài đặt PostGIS đã trở nên dễ dàng hơn rất nhiều trong Ubuntu 12.04 trở lên. Nhìn chung có hai cách để thực hiện: cài đặt từ PPA và xây dựng từ nguồn. Điều gì sau đây là các kịch bản shell chung tôi sử dụng cho từng trường hợp.

Cài đặt từ PPA ... Tôi sử dụng 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;"

Xây dựng từ nguồn ... Điều này giả định PostGIS 2.1 và PostgreSQL 9.1 nhưng có thể là bất kỳ phiên bản nào gần đây của cả hai; thay đổi khi cần thiết

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;"

Bạn sẽ nhận thấy một chủ đề giữa hai; vẫn cần phải tạo một cơ sở dữ liệu mẫu và điền vào spatial_ref_sysbảng.

Đối với việc thiết lập với TIGER , hãy làm theo các hướng dẫn để tải dữ liệu TIGER trong tài liệu PostGIS 2.x, Chương 2 .


Arthur: Tôi đã cài đặt PostGIS 2.1 và postgis.sql không tồn tại trong thư mục sau: /usr/share/postgresql/9.3/contrib/postgis-2.1
stat_novice
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.