Как узнать, что 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.
надеюсь, это сработает для вас.