Почему 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 или проекции Ламберта или Альберса по всему континенту.

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