Estoy buscando un paquete de Python que me permita ingresar un código de zona UTM y geo_referencing distintas secuencias (por ejemplo, WKT o Proj4) de salida. ¿Hay cualquier ligeros, utilizados paquetes que hay que realizan esta función?
Respuestas
¿Demasiados anuncios?GDAL contiene la más completa aplicación de código abierto y no soy consciente de cualquier puerto a Python.
Rasterio hace el mismo tipo de cosa que enlaces de Python de GDAL y llama a las funciones de biblioteca C mismo.
Rasterio no es ligera por cualquier medida.
Yo uso los enlaces Python para GDAL y OGR. Si GDAL/OGR es instalado en nuestra máquina, el pcs.csv
archivo gdal-data
directorio contiene un extracto de la EPSG Registro sobre proyectada sistemas de coordenadas de referencia, por lo que podemos filtrar este archivo para obtener el resultado. Supongamos que estamos interesados en la zona 33, he aquí un rápido y sucio solución:
from osgeo import ogr, osr
in_ds = ogr.GetDriverByName('CSV').Open('pcs.csv')
layer = in_ds.GetLayer()
zone = '33' #'33N'
layer.SetAttributeFilter("COORD_REF_SYS_NAME LIKE '%UTM zone {0}%'".format(zone))
for feature in layer:
code = feature.GetField("COORD_REF_SYS_CODE")
name = feature.GetField("COORD_REF_SYS_NAME")
srs = osr.SpatialReference()
srs.ImportFromEPSG(int(code))
print 'EPSG:' + code + ' - ' + name
print 'Proj4: ', srs.ExportToProj4()
print 'WKT: ', srs.ExportToWkt()
print
Nota: podemos refinar la búsqueda seleccionando también el hemisferio (por ejemplo, 33N) cambiar el valor de la zone
variable en el código.
Esto es un extracto del resultado:
EPSG:2078 - ELD79 / UTM zone 33N
Proj4: +proj=utm +zone=33 +ellps=intl +towgs84=-115.8543,-99.0583,-152.4616,0,0,0,0 +units=m +no_defs
WKT: PROJCS["ELD79 / UTM zone 33N",GEOGCS["ELD79",DATUM["European_Libyan_Datum_1979",SPHEROID["International 1924",6378388,297,AUTHORITY["EPSG","7022"]],TOWGS84[-115.8543,-99.0583,-152.4616,0,0,0,0],AUTHORITY["EPSG","6159"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4159"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",15],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","2078"]]
EPSG:2312 - Garoua / UTM zone 33N
Proj4: +proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs
WKT: PROJCS["Garoua / UTM zone 33N",GEOGCS["Garoua",DATUM["Garoua",SPHEROID["Clarke 1880 (RGS)",6378249.145,293.465,AUTHORITY["EPSG","7012"]],AUTHORITY["EPSG","6197"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4197"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",15],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","2312"]]
EPSG:2313 - Kousseri / UTM zone 33N
Proj4: +proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs
WKT: PROJCS["Kousseri / UTM zone 33N",GEOGCS["Kousseri",DATUM["Kousseri",SPHEROID["Clarke 1880 (RGS)",6378249.145,293.465,AUTHORITY["EPSG","7012"]],AUTHORITY["EPSG","6198"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4198"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",15],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","2313"]]