Как узнать, что SRID использовать для файла shp?

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

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 и их "geogcs"?

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

изображение http://img245.imageshack.us/img245/2545/4326sand.png

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

файл shp из здесь

6 ответов


подробнее о Синекдохаответ, SRID иногда называют кодом "EPSG". Код SRID / EPSG является краткой рукой defacto для хорошо известных текстовых представлений проекций.

вы можете выполнить быстрый поиск в таблице 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 и кучу других представлений.

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


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


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

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


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

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

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

Я обычно храню свои данные в разных SRIDs в моих PostGIS dbs. Однако мне всегда нужно проецировать на выход SRS. Вы показываете предварительно отрисованные плитки OpenStreetMap, и я уверен, что они были нарисованы с помощью SRID 900913 (модифицированная проекция Меркатора Карты Google что теперь все используют для оказать).

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

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

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

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

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

Ура


используйте модуль OSR Python GDAL для определения кода:

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')

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

используйте параметр запрос по фильтру и введите: североамериканские данные 1983.

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

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