Почему QGIS не обнаруживает CRS из файла .prj?


9

У меня есть ряд гексагональных сеток длиной 1 км, которые охватывают различные округа в Соединенных Штатах в базе данных postgreSQL / postGIS. Каждая сетка имеет CRS EPSG: 3857, а уровень округов имеет EPSG: 3857. При просмотре сетки с округами в QGIS все выглядит великолепно.

Но ... чтобы поделиться этими сетками с коллегами, мне пришлось экспортировать их в шейп-файлы, используя ogr2ogr. Просматривая их в QGIS, каждая сетка выглядит подтянутой примерно на 20 км или около того, и QGIS автоматически устанавливает CRS на EPSG: 3395 (что не является CRS проекта).

Когда я экспортирую таблицы postGIS в виде шейп-файлов из QGIS , файл .prj выглядит точно так же, как экспортированные шейп-файлы ogr2ogr , но экспортированные таблицы postGIS отображаются правильно. Я заметил, что QGIS создает файл .qpj при экспорте шейп-файлов из QGIS , поэтому я пришел к выводу, что QGIS игнорирует .prj и ищет вместо него .qpj. Почему он не может прочитать .prj без .qpj? Другие шейп-файлы (например, из переписи США) не имеют .qpj, но QGIS отображает их правильно.

Я нашел обходной путь, сохранив файл default.qpj и создав из него новый файл .qpj для каждого файла, экспортируемого с использованием ogr2ogr, но это кажется грязным и явно не воспроизводимым, поскольку работает только для EPSG: 3857.

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], БЛОК [ "Степень", +0,017453292519943295]], ПРОЕКТИРОВАНИЕ [ "Меркатора"], параметр [ "central_meridian", 0], параметр [ "false_easting", 0], параметр [ "false_northing", 0], блок [ "Измеритель", 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, ДНУ [ "EPSG", "8901"]], БЛОКА [ "степень", +0,0174532925199433, ДНУ [ "EPSG", "9122"]], АВТОРИТЕТ [ "EPSG", "4326"]], ПРОЕЦИРОВАНИЯ [ "Mercator_1SP"], параметр [ "central_meridian", 0], параметр [ "scale_factor", 1], параметр [ "false_easting", 0], параметр [ "false_northing" , 0], блок [ "метр", 1, ДНУ [ "EPSG", "9001"]], AXIS [ "Х", ИСТ], AXIS [ "Y" СЕВЕР], РАСШИРЕНИЕ [ "Proj4", "+ proj = merc + a = 6378137 + b = 6378137 + lat_ts = 0.0 + lon_0 = 0.0 + x_0 = 0.0 + y_0 = 0 + k = 1.0 + unit = m + nadgrids = @ null + wktext + no_defs "], AUTHORITY [" EPSG "," 3857 "]]

РЕДАКТИРОВАТЬ :

Проблема была решена путем преобразования EPSG: 3857 в EPSG: 2163 во всех моих сценариях. Я все еще не уверен, в чем проблема, так как сетки правильно отображаются в QGIS при первоначальной загрузке из таблицы postgreSQL (с EPSG: 3857).

Мой обходной путь оказался грубым, как я и думал, поскольку мой коллега не смог использовать файл в ArcGIS, который неправильно читал .prj или .qpj.


Можете ли вы добавить команду ogr2ogr?
alphabetasoup

Вы также можете опубликовать содержимое файлов .prj и .qpj?
Mkennedy

1
Может быть, у этого «WGS84 Web Mercator Projection on the Second Life» есть ограниченные возможности en.wikipedia.org/wiki/Web_Mercator. В отличие от эллипсоидального Mercator и сферического Mercator, Web Mercator не совсем конформен из-за использования эллипсоидального исходные географические координаты относительно сферической проекции.
huckfinn

@huckfinn Я изменил все EPSG: 3857 на EPSG: 2163 в моем сценарии, и теперь моя проблема решена. Я до сих пор не уверен, почему это так, поскольку все сетки отображаются правильно при загрузке из таблиц postgreSQL с помощью EPSG: 3857. Спасибо за совет.
haff

Ответы:


4

EPSG:3857Определение грязный хак , чтобы получить прогноз , что Google изобрел в современное программное обеспечение ГИС. Это комбинация сферы и эллипсоида, которая не используется "нормальными" проекциями. К сожалению, каждое программное обеспечение использует другой способ его адаптации.

QGIS использует файл .qpj, ARCGIS - WKT в файле .prj, а GDAL - определение proj.4. Файл .qpj включает определение proj.4 в определение WKT.

Самый безопасный способ справиться с такими проблемами - избегать Google Mercator. Вы можете лучше использовать местную государственную плоскость, UTM или проекции Ламберта или Альберса по всему континенту.


Хорошо знать. Спасибо за Ваш ответ. Однако я заметил, что когда я экспортирую файл формы с EPSG 2163, используя ogr2ogr, не создается .qpj, но QGIS все еще читает его правильно. Поэтому я предполагаю, что QGIS будет читать информацию из .prj в отсутствие .qpj. Кроме того, проекции плоскости состояний будут отлично работать, если они работают только в одном штате, но мои сценарии используют коды графических фишек из многих штатов, поэтому в моем случае плоскость состояний будет непрактичной.
haff

1
QGIS обычно работает нормально с файлом .prj, но не с проецируемыми файлами World Merctaor, полученными из другого программного обеспечения. Лучше всего подходит CRS всегда зависит от размера области исследования. EPSG 2163 должен подойти для вашей задачи.
AndreJ
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.