ข้อมูลของฉันอยู่ในฐานข้อมูล PostGIS ฉันต้องการสร้าง shapefile จากแบบสอบถาม ฉันจะทำสิ่งนั้นได้อย่างไร
ข้อมูลของฉันอยู่ในฐานข้อมูล PostGIS ฉันต้องการสร้าง shapefile จากแบบสอบถาม ฉันจะทำสิ่งนั้นได้อย่างไร
คำตอบ:
วิธีที่แนะนำในการทำเช่นนี้คือการใช้ยูทิลิตี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'"
ดูสิ่งนี้ด้วย
ฉันมีคะแนนชื่อเสียงไม่เพียงพอที่จะแสดงความคิดเห็นต่อคำตอบของ 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'"
อีกวิธีหนึ่งคือการใช้ qgis หรือผลิตภัณฑ์ที่คล้ายกัน: คุณเปิดการเชื่อมต่อและเลือกข้อมูลที่คุณสนใจขึ้นอยู่กับชิ้นส่วนของข้อมูลที่คุณต้องการส่งออก จากนั้นคุณบันทึกเป็น shapefile ...
หากคุณต้องการส่งออกโดยอัตโนมัติและ / หรือส่วนใหญ่ของข้อมูล rudivonstaden ให้บริการโซลูชั่นที่เหมาะสม!
pgsql2shp
เพื่อส่งออกมุมมองไปยังรูปร่างไฟล์หรือไม่?