2016-04-20 10 views
0

У меня есть координаты данных, состоящие из двух 6-значных чисел (например, 300 000 250 000), которые я хочу преобразовать в long., Lat. координаты. Мне сказали, что данные координат (называемые GLNX, GLNY) исходят из системы координат штата Мичиган, номер EPSG ESRI: 102121 Однако, когда я передаю этот номер 102121 в gdal.ImportFromEPSG, он жалуется, что он не знает, , Два вопроса:Преобразование «GLNX/Y» в долготу, широту

  1. Как создать SpatialReference для ESRI: 102121
  2. Могу ли я передать мой 6-значный номер пары непосредственно перепроецировать, или мне нужно «подогнать» его, например, масштаб некоторых мощность 10, или конвертировать из футов в метры, или что?
+0

Ссылка на GDAL для [importFromEPSG] (http://www.gdal.org/classOGRSpatialReference.html#a8a5b8c9a205eedc6b88a14aa0c219969) - «Определения систем координат, как правило, считываются из файлов поддержки, полученных из EPSG ... и возвращаются к поиску для файла инициализации PROJ.4 epsg или определения в epsg.wkt. " Убедитесь, что [проекция 102121] (http://spatialreference.org/ref/esri/102121/html/) находится в этих файлах поддержки. – Erica

ответ

0

Я не знаю, как вы используете GDAL API, но с GDAL 2.0 через Python, это работает для меня:

from osgeo import osr 
osr.UseExceptions() 
sr = osr.SpatialReference() 
sr.ImportFromEPSG(102121) # returns 0 for success, which I get 

Но я подозреваю, что это не работает, как описано в вашем вопрос. Таким образом, вы можете импортировать из proj.4 кода вместо, который вы можете получить от http://epsg.io/102121 или добавить .proj4 расширения к исходному коду:

import urllib2 
srid = 102121 
response = urllib2.urlopen('http://epsg.io/%d.proj4' % (srid,)) 
sr.ImportFromProj4(response.read()) # returns 0 for success 
print(sr.ExportToPrettyWkt()) # shows that it is understood 

Код proj.4, в конечном счете используется libproj сделать фактическую проекцию , а не WKT.