2009-10-09 4 views
34

Я пытаюсь поместить файл SHP в мою базу данных PostGIS, данные просто немного. Я думаю, это потому, что я использую неправильный SRID. Содержимое файла PRJ выглядит следующим образом:Откуда вы знаете, какой SRID использовать для shp-файла?

GEOGCS["GCS_North_American_1983", 
DATUM["D_North_American_1983", 
SPHEROID["GRS_1980",6378137.0,298.257222101]], 
PRIMEM["Greenwich",0.0], 
UNIT["Degree",0.0174532925199433]] 

В чем SRID это соотносится? И в целом, как я могу найти SRID на основе информации, найденной в файле PRJ? Есть ли таблица поиска где-нибудь, в которой перечислены все SRID и их эквиваленты геогек?

Для справки, здесь изображение некоторых данных, импортированных с использованием srid=4269 (я также попытался 4326 и получил точно такие же результаты):

image http://img245.imageshack.us/img245/2545/4326sand.png

Желтый мои личные данные импортируются из SHP , а фон - от openlayers (от администратора geodjango). Означает ли это, что я использую неправильный SRID, или это просто ожидаемая погрешность?

Файл л.с от here

ответ

23

Чтобы уточнить ответ synecdoche, SRID иногда называют кодом «EPSG». Код SRID/EPSG является дефакто-короткой рукой для представлений проекций с хорошо известным текстом.

Вы можете сделать быстрый поиск по таблице SRID, чтобы увидеть, если вы можете найти точное или подобное совпадение:
SELECT srid, srtext, proj4text FROM spatial_ref_sys WHERE srtext ILIKE '%BLAH%'

Выше был найден в http://www.bostongis.com/?content_name=postgis_tut01.

Вы также можете выполнить поиск по spatialreference.org для таких вещей. Инструмент поиска является примитивным, поэтому вам, возможно, придется использовать поиск Google и указать сайт, но любые результаты покажут вам содержимое ESRI PRJ, PostGIS SQL INSERT и множество других представлений.

Я думаю, что ваш PRJ находится по адресу: http://spatialreference.org/ref/sr-org/15/

11

данные, кажется, NAD83, который имеет SRID из 4269. База данных PostGIS имеет spatial_ref_sys таблицу, которая является таблица SRID поиска.

Если данные выглядят одинаково с SRID 4269 (NAD83) и 4326 (WGS84), то есть что-то не так.

7

Go и скачать GDAL utilities, то ogrinfo (который плюнул бы информацию о проекции) и ogr2ogr утилиты незаменимы.

Джеймс дал уже ссылку на spatialreference.org. Это помогает найти пространственную справочную информацию ... Предполагаю, что вы загрузили spatial_ref_sys.sql, когда вы prepared your postgis instance.

И, честно говоря, я не думаю, что проблема связана с вещами PostGIS.

Обычно я храню свои данные в разных SRID в своих PostGIS dbs. Тем не менее, мне всегда нужно проектировать на выход SRS. Вы показываете готовые плитки OpenStreetMap, и я уверен, что они были нарисованы с использованием SRID 900913 (the Google Map's modified mercator projection, который теперь каждый использует для render).

Моя рекомендация вам:

1- Установите правильную проекцию в коде OpenLayers, который соответствует какой бы то ни плитки вы считывал.

2.- Храните данные в базе данных в любом SRID, который вы хотите (если это правильно, конечно).

3.- Убедитесь, что сервер, который вы используете для создания изображений из ваших данных (ArcGIS Server, Mapserver, GeoServer или что-то еще), перепрограммируется на тот же SRS.

Все будет соответствовать.

Приветствия

1

Обязательно обратите внимание на: http://www.epsg-registry.org/

Используйте запрос с помощью опции фильтра и введите: североамериканский Datum 1983.

Это дает -> EPSG: 6269.

Надеюсь, это сработает для вас.

5

Используйте модуль библиотека GDAL в OSR Python, чтобы определить код:

from osgeo import osr 

srsWkt = '''GEOGCS["GCS_North_American_1983", 
DATUM["D_North_American_1983", 
SPHEROID["GRS_1980",6378137.0,298.257222101]], 
PRIMEM["Greenwich",0.0], 
UNIT["Degree",0.0174532925199433]]''' 

# Load in the projection WKT 
sr = osr.SpatialReference(srsWkt) 

# Try to determine the EPSG/SRID code 
res = sr.AutoIdentifyEPSG() 
if res == 0: # success 
    print('SRID=' + sr.GetAuthorityCode(None)) 
    # SRID=4269 
else: 
    print('Could not determine SRID') 
18

Prj2EPSG это небольшой сайт, направленный на именно этой проблеме; вставьте содержимое PRJ, и он делает все возможное, чтобы найти подходящую EPSG. У них также есть web service API. Это не точная наука. Кажется, что они используют Lucene и базу данных EPSG для текстового поиска совпадений.

+0

Спасибо за обмен. Я работаю над проектом, в котором мне нужно импортировать много файлов ГИС из нескольких штатов США и получить право EPSG с их API было очень полезно. –

+0

По какой-то причине я все еще смущен после прочтения этого ответа, у меня есть файл prj и загружен на http://prj2epsg.org/search, получил 26918, который не похож на код SRID ... –

+0

Sure это: http://spatialreference.org/ref/epsg/nad83-utm-zone-18n/ – Nelson