ทำไม QGIS ไม่ตรวจจับ CRS จากไฟล์. prj


9

ฉันมีกริดหกเหลี่ยมจำนวน 1 กม. ที่ครอบคลุมมณฑลต่างๆในสหรัฐอเมริกาในฐานข้อมูล postgreSQL / postGIS แต่ละตารางมี CRS EPSG: 3857 และชั้นเขตมี EPSG: 3857 เมื่อดูกริดกับมณฑลใน QGIS ทุกอย่างดูดี

แต่ ... เพื่อแบ่งปันกริดเหล่านี้กับเพื่อนร่วมงานฉันต้องส่งออกไปยังรูปร่างไฟล์โดยใช้ ogr2ogr การดูข้อมูลเหล่านี้ใน QGIS แต่ละตารางจะมีการเลื่อนขึ้นประมาณ 20 กม. และ QGIS จะตั้งค่า CRS เป็น EPSG โดยอัตโนมัติ: 3395 (ซึ่งไม่ใช่ CRS ของโครงการ)

เมื่อฉันส่งออกตาราง PostGIS เป็น shapefiles จาก QGIS , ดูไฟล์ .prj ว่าเช่นเดียวกับการส่งออก shapefiles ogr2ogrแต่ PostGIS ส่งออกตารางจะแสดงได้อย่างถูกต้อง ฉันสังเกตเห็นว่า QGIS สร้างไฟล์. qpj เมื่อส่งออกไฟล์รูปร่างจาก QGISดังนั้นฉันจึงสรุปได้ว่า QGIS ไม่สนใจ. prj และค้นหา. qpj แทน ทำไมมันไม่สามารถอ่าน. prj หากไม่มี. qpj ไฟล์รูปร่างอื่น ๆ (เช่นจากการสำรวจสำมะโนประชากรของสหรัฐ) ไม่มี. qpj แต่ QGIS แสดงสิ่งเหล่านี้อย่างถูกต้อง

ฉันคิดวิธีแก้ปัญหาด้วยการบันทึกค่าเริ่มต้น qpj และสร้าง. qpj ใหม่จากไฟล์นี้สำหรับไฟล์ทุกไฟล์ที่ส่งออกโดยใช้ ogr2ogr แต่ดูเหมือนว่าจะยุ่งและไม่สามารถทำซ้ำได้

Sidenote: ฉันใช้ QGIS 2.0.1

แก้ไข:

นี่คือคำสั่ง ogr2ogr ที่ฉันใช้:

ogr2ogr -f "ESRI Shapefile" /home/matt/data/hex_grid_1 PG:'dbname=mydb user=matt' hex_grid_1

เนื้อหาของ. prj:

PROJCS [ "WGS_84_Pseudo_Mercator" GEOGCS [ "GCS_WGS_1984" DATUM [ "D_WGS_1984" ลูกกลม [ "WGS_1984" 6378137,298.257223563]] PRIMEM [ "กรีนวิช" 0], UNIT [ "ปริญญา" .017453292519943295]] ฉาย [ "Mercator"] พารามิเตอร์ [ "central_meridian" 0] พารามิเตอร์ [ "false_easting" 0] พารามิเตอร์ [ "false_northing" 0], UNIT [ "มิเตอร์" 1] พารามิเตอร์ [ "standard_parallel_1", 0.0] ]

เนื้อหาของ. qpj:

PROJCS ["WGS 84 / Pseudo-Mercator", GEOGCS ["WGS 84", DATUM ["WGS_1984", SPHEROID ["WGS 84", 6378137,298.257223563, AUTHORITY ["EPSG", "7030"]], AUTHORITY EPSG", "6326"]] PRIMEM [ "กรีนวิช", 0, AUTHORITY [ "EPSG", "8901"]] UNIT [ "ปริญญา" 0.0174532925199433 อำนาจ [ "EPSG", "9122"]] AUTHORITY [ "EPSG", "4326"]] PROJECTION [ "Mercator_1SP"] พารามิเตอร์ [ "central_meridian" 0] พารามิเตอร์ [ "scale_factor" 1] พารามิเตอร์ [ "false_easting" 0] พารามิเตอร์ [ "false_northing" , 0], UNIT [ "เมตร", 1, AUTHORITY [ "EPSG", "9001"]] AXIS [ "X", EAST] AXIS [ "Y" NORTH] EXTENSION [ "PROJ4", "+ proj = merc + a = 6378137 + b = 6378137 + lat_ts = 0.0 + lon_0 = 00 + x_0 = 0.0 + y_0 = 0 + k = 1.0 + หน่วย = m + nadgrids = @ null + wktext + no_defs "], ผู้มีอำนาจ [" EPSG "," 3857 "]

แก้ไข :

ปัญหาได้รับการแก้ไขโดยการแปลง EPSG: 3857 ไปเป็น EPSG: 2163 ในสคริปต์ทั้งหมดของฉัน ฉันยังไม่แน่ใจว่าปัญหานี้เกิดขึ้นเนื่องจากกริดแสดงอย่างถูกต้องใน QGIS เมื่อเริ่มโหลดจากตาราง postgreSQL (ด้วย EPSG: 3857)

วิธีแก้ปัญหาของฉันพิสูจน์น้ำมันดิบอย่างที่ฉันคิดเพราะเพื่อนร่วมงานของฉันไม่สามารถใช้ไฟล์ใน ArcGIS ซึ่งไม่ได้อ่าน. prj หรือ. qpj อย่างถูกต้อง


คุณสามารถเพิ่มคำสั่ง ogr2ogr ได้หรือไม่?
alphabetasoup

คุณสามารถโพสต์เนื้อหาของไฟล์. prj และ. qpj ได้หรือไม่
mkennedy

1
อาจจะมีความสามารถที่ จำกัด บน "WGS84 Web Mercator Projection บน Sphere Sphere" en.wikipedia.org/wiki/Web_Mercator .. ไม่เหมือน Mercator ทรงกลมและ Mercator ทรงกลม Web Mercator นั้นค่อนข้างไม่สอดคล้องกันเนื่องจากการใช้รูปวงรี พิกัดทางภูมิศาสตร์ของตัวเลขกับการฉายทรงกลม
huckfinn

@huckfinn ฉันเปลี่ยนกำไรต่อหุ้นทั้งหมด: 3857 เป็นกำไรต่อหุ้น: 2163 ในสคริปต์ของฉันและตอนนี้ปัญหาของฉันได้รับการแก้ไขแล้ว ฉันยังไม่แน่ใจว่าทำไมถึงเป็นเช่นนี้เนื่องจากกริดแสดงทั้งหมดอย่างถูกต้องเมื่อโหลดจากตาราง postgreSQL ด้วย EPSG: 3857 ขอบคุณสำหรับทิป.
haff

คำตอบ:


4

EPSG:3857นิยามเป็นสับสกปรกที่จะได้รับการฉายที่ Google คิดค้นเป็นซอฟต์แวร์ GIS ที่ทันสมัย เป็นการรวมกันของทรงกลมและทรงรีซึ่งไม่ได้ใช้ในการฉายภาพแบบ "ปกติ" โชคไม่ดีที่ซอฟต์แวร์ทุกตัวใช้วิธีอื่นในการปรับตัว

QGIS ใช้ไฟล์. qpj, ARCGIS the WKT ในไฟล์. prj และ GDAL สำหรับคำนิยาม proj.4 ไฟล์. qpj รวมนิยาม proj.4 ไว้ในนิยาม WKT

วิธีที่ปลอดภัยที่สุดในการจัดการกับปัญหาดังกล่าวคือการหลีกเลี่ยง Google Mercator คุณสามารถใช้เครื่องบินของรัฐ UTM หรือ Lambert หรือ Albers ทั่วทั้งทวีป


ดีแล้วที่รู้. ขอบคุณสำหรับคำตอบ. ฉันสังเกตเห็นว่าเมื่อฉันส่งออกไฟล์รูปร่างด้วย EPSG 2163 โดยใช้ ogr2ogr ไม่มีการสร้าง. qpj แต่ QGIS ยังคงอ่านอย่างถูกต้อง ดังนั้นฉันสมมติว่า QGIS จะอ่านข้อมูลจาก. prj หากไม่มี. qpj นอกจากนี้การคาดการณ์ระนาบของเครื่องบินจะใช้งานได้ดีหากใช้งานในสถานะเดียว แต่สคริปต์ของฉันใช้รหัส fips เคาน์ตีจากหลายรัฐดังนั้นระนาบสถานะจะไม่สามารถใช้งานได้ในกรณีของฉัน
haff

1
โดยปกติแล้ว QGIS จะทำงานได้ดีกับไฟล์. prj แต่ไม่สามารถใช้กับไฟล์ที่ฉายโดย World Merctaor ที่มาจากซอฟต์แวร์อื่น CRS ที่เหมาะสมที่สุดนั้นขึ้นอยู่กับขนาดของพื้นที่ศึกษา EPSG 2163 น่าจะเหมาะกับงานของคุณ
AndreJ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.