ฉันจะรับ shapefile จากคิวรี postgis ได้อย่างไร


44

ข้อมูลของฉันอยู่ในฐานข้อมูล PostGIS ฉันต้องการสร้าง shapefile จากแบบสอบถาม ฉันจะทำสิ่งนั้นได้อย่างไร

คำตอบ:


85

วิธีที่แนะนำในการทำเช่นนี้คือการใช้ยูทิลิตีpgsql2shpซึ่งควรติดตั้งด้วย PostGIS โปรดทราบว่าคุณต้องรวมคอลัมน์รูปทรงเรขาคณิตในแบบสอบถาม

$ pgsql2shp -f <path to output shapefile> -h <hostname> -u <username> -P <password> databasename "<query>"

ตัวอย่าง (สร้างqds_cnt.shpในไดเรกทอรีปัจจุบัน):

$ pgsql2shp -f qds_cnt -h localhost -u postgres -P password gisdb "SELECT sp_count, geom FROM grid50_rsa WHERE province = 'Gauteng'"

Initializing... 
Done (postgis major version: 2).
Output shape: Polygon
Dumping: XXXXXXXXXXXXXXXXXXXX [1947 rows].

หากคุณต้องการบันทึกทั้งตารางเป็น shapefile เพียงใช้ชื่อตารางเป็นแบบสอบถาม

คุณยังสามารถใช้ยูทิลิตีogr2ogr ได้แต่มีการขึ้นต่อกันมากกว่าดังนั้นจึงไม่ควรเป็นตัวเลือกแรก หากคุณได้รับการพิจารณาคำสั่งเทียบเท่าจะเป็น:

$ ogr2ogr -f "ESRI Shapefile" qds_cnt.shp PG:"host=localhost user=postgres dbname=gisdb password=password" -sql "SELECT sp_count, geom FROM grid50_rsa WHERE province = 'Gauteng'"

ดูสิ่งนี้ด้วย


เป็นไปได้ที่จะใช้pgsql2shpเพื่อส่งออกมุมมองไปยังรูปร่างไฟล์หรือไม่?
Ricardo Barros Lourenço

8

ฉันมีคะแนนชื่อเสียงไม่เพียงพอที่จะแสดงความคิดเห็นต่อคำตอบของ rudivonstaden แต่ฉันจะเพิ่มการเขียนคำสั่ง sql ในตัวอักษรตัวพิมพ์ใหญ่ที่มีความสำคัญต่อ pgsql2shp

เช่นนี้จะไม่ทำงาน:

$ pgsql2shp -f qds_cnt -h localhost -u postgres -P password gisdb "Select sp_count, geom from grid50_rsa where province = 'Gauteng'"

ในขณะที่สิ่งนี้จะทำงาน:

$ pgsql2shp -f qds_cnt -h localhost -u postgres -P password gisdb "SELECT sp_count, geom FROM grid50_rsa WHERE province = 'Gauteng'"

7

อีกวิธีหนึ่งคือการใช้ qgis หรือผลิตภัณฑ์ที่คล้ายกัน: คุณเปิดการเชื่อมต่อและเลือกข้อมูลที่คุณสนใจขึ้นอยู่กับชิ้นส่วนของข้อมูลที่คุณต้องการส่งออก จากนั้นคุณบันทึกเป็น shapefile ...

หากคุณต้องการส่งออกโดยอัตโนมัติและ / หรือส่วนใหญ่ของข้อมูล rudivonstaden ให้บริการโซลูชั่นที่เหมาะสม!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.