本文整理汇总了Python中osgeo.osr.CoordinateTransformation方法的典型用法代码示例。如果您正苦于以下问题:Python osr.CoordinateTransformation方法的具体用法?Python osr.CoordinateTransformation怎么用?Python osr.CoordinateTransformation使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类osgeo.osr
的用法示例。
在下文中一共展示了osr.CoordinateTransformation方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: reproject
# 需要导入模块: from osgeo import osr [as 别名]
# 或者: from osgeo.osr import CoordinateTransformation [as 别名]
def reproject(geom, from_epsg, to_epsg):
"""
Reproject the given geometry from the given EPSG code to another
"""
# Note: this is currently only accurate for the U.S.
source = osr.SpatialReference()
source.ImportFromEPSG(from_epsg)
target = osr.SpatialReference()
target.ImportFromEPSG(to_epsg)
transform = osr.CoordinateTransformation(source, target)
geom.Transform(transform)
return geom
示例2: get_coord_transform
# 需要导入模块: from osgeo import osr [as 别名]
# 或者: from osgeo.osr import CoordinateTransformation [as 别名]
def get_coord_transform(source_epsg, target_epsg):
'''
Creates an OGR-framework coordinate transformation for use in projecting
coordinates to a new coordinate reference system (CRS). Used as, e.g.:
transform = get_coord_transform(source_epsg, target_epsg)
transform.TransformPoint(x, y)
Arguments:
source_epsg The EPSG code for the source CRS
target_epsg The EPSG code for the target CRS
'''
# Develop a coordinate transformation, if desired
transform = None
source_ref = osr.SpatialReference()
target_ref = osr.SpatialReference()
source_ref.ImportFromEPSG(source_epsg)
target_ref.ImportFromEPSG(target_epsg)
return osr.CoordinateTransformation(source_ref, target_ref)
示例3: toWgs
# 需要导入模块: from osgeo import osr [as 别名]
# 或者: from osgeo.osr import CoordinateTransformation [as 别名]
def toWgs(mgrs):
""" Converts an MGRS coordinate string to geodetic (latitude and longitude)
coordinates
@param mgrs - MGRS coordinate string
@returns - tuple containning latitude and longitude values
"""
if _checkZone(mgrs):
zone, hemisphere, easting, northing = _mgrsToUtm(mgrs)
else:
zone, hemisphere, easting, northing = _mgrsToUps(mgrs)
epsg = _epsgForUtm(zone, hemisphere)
src = osr.SpatialReference()
src.ImportFromEPSG(epsg)
dst = osr.SpatialReference()
dst.ImportFromEPSG(4326)
ct = osr.CoordinateTransformation(src, dst)
longitude, latitude, z = ct.TransformPoint(easting, northing)
return latitude, longitude
示例4: insertFrame
# 需要导入模块: from osgeo import osr [as 别名]
# 或者: from osgeo.osr import CoordinateTransformation [as 别名]
def insertFrame(self, scale, mi, inom, frame):
self.checkAndOpenDb()
srid = self.findEPSG()
geoSrid = QgsCoordinateReferenceSystem(int(srid)).geographicCRSAuthId().split(':')[-1]
ogr.UseExceptions()
outputDS = self.buildOgrDatabase()
outputLayer=outputDS.GetLayerByName('public_aux_moldura_a')
newFeat=ogr.Feature(outputLayer.GetLayerDefn())
auxGeom = ogr.CreateGeometryFromWkb(frame)
#set geographic srid from frame
geoSrs = ogr.osr.SpatialReference()
geoSrs.ImportFromEPSG(int(geoSrid))
auxGeom.AssignSpatialReference(geoSrs)
#reproject geom
outSpatialRef = outputLayer.GetSpatialRef()
coordTrans = osr.CoordinateTransformation(geoSrs, outSpatialRef)
auxGeom.Transform(coordTrans)
newFeat.SetGeometry(auxGeom)
newFeat.SetField('mi', mi)
newFeat.SetField('inom', inom)
newFeat.SetField('escala', str(scale))
out=outputLayer.CreateFeature(newFeat)
outputDS.Destroy()
示例5: insertFrame
# 需要导入模块: from osgeo import osr [as 别名]
# 或者: from osgeo.osr import CoordinateTransformation [as 别名]
def insertFrame(self, scale, mi, inom, frame):
self.checkAndOpenDb()
srid = self.findEPSG()
geoSrid = QgsCoordinateReferenceSystem(int(srid)).geographicCRSAuthId().split(':')[-1]
ogr.UseExceptions()
outputDS = self.buildOgrDatabase()
outputLayer=outputDS.GetLayerByName(self.getFrameLayerName())
newFeat=ogr.Feature(outputLayer.GetLayerDefn())
auxGeom = ogr.CreateGeometryFromWkb(frame)
#set geographic srid from frame
geoSrs = ogr.osr.SpatialReference()
geoSrs.ImportFromEPSG(int(geoSrid))
auxGeom.AssignSpatialReference(geoSrs)
#reproject geom
outSpatialRef = outputLayer.GetSpatialRef()
coordTrans = osr.CoordinateTransformation(geoSrs, outSpatialRef)
auxGeom.Transform(coordTrans)
newFeat.SetGeometry(auxGeom)
newFeat.SetField('mi', mi)
newFeat.SetField('inom', inom)
newFeat.SetField('escala', str(scale))
out=outputLayer.CreateFeature(newFeat)
outputDS.Destroy()
示例6: _transform_osr
# 需要导入模块: from osgeo import osr [as 别名]
# 或者: from osgeo.osr import CoordinateTransformation [as 别名]
def _transform_osr(x1, y1, epsg_src, epsg_dst, polar=False):
src = osr.SpatialReference()
# Check if we are using osgeo.osr linked against PROJ 6+
# If so, input axis ordering needs honored per projection, even though
# OAMS_TRADITIONAL_GIS_ORDER should fix it (doesn't seem to work for UPS)
# See GDAL/OGR migration guide for 2.4 to 3.0
# https://github.com/OSGeo/gdal/blob/master/gdal/MIGRATION_GUIDE.TXT and
# https://trac.osgeo.org/gdal/wiki/rfc73_proj6_wkt2_srsbarn#Axisorderissues
osr_proj6 = hasattr(src, 'SetAxisMappingStrategy')
if not polar and osr_proj6:
src.SetAxisMappingStrategy(osr.OAMS_TRADITIONAL_GIS_ORDER)
src.ImportFromEPSG(epsg_src)
_log_proj_crs(src, proj_desc='src', espg=epsg_src)
dst = osr.SpatialReference()
if not polar and osr_proj6:
dst.SetAxisMappingStrategy(osr.OAMS_TRADITIONAL_GIS_ORDER)
dst.ImportFromEPSG(epsg_dst)
_log_proj_crs(dst, proj_desc='dst', espg=epsg_dst)
ct = osr.CoordinateTransformation(src, dst)
if polar and osr_proj6:
# only supported with osgeo.osr v3.0.0+
y2, x2, _ = ct.TransformPoint(y1, x1)
else:
x2, y2, _ = ct.TransformPoint(x1, y1)
return x2, y2
示例7: reproject_geotransform
# 需要导入模块: from osgeo import osr [as 别名]
# 或者: from osgeo.osr import CoordinateTransformation [as 别名]
def reproject_geotransform(in_gt, old_proj_wkt, new_proj_wkt):
"""
Reprojects a geotransform from the old projection to a new projection. See
[https://gdal.org/user/raster_data_model.html]
Parameters
----------
in_gt
A six-element numpy array, usually an output from gdal_image.GetGeoTransform()
old_proj_wkt
The projection of the old geotransform in well-known text.
new_proj_wkt
The projection of the new geotrasform in well-known text.
Returns
-------
out_gt
The geotransform in the new projection
"""
old_proj = osr.SpatialReference()
new_proj = osr.SpatialReference()
old_proj.ImportFromWkt(old_proj_wkt)
new_proj.ImportFromWkt(new_proj_wkt)
transform = osr.CoordinateTransformation(old_proj, new_proj)
(ulx, uly, _) = transform.TransformPoint(in_gt[0], in_gt[3])
out_gt = (ulx, in_gt[1], in_gt[2], uly, in_gt[4], in_gt[5])
return out_gt
示例8: _latlon2pixel
# 需要导入模块: from osgeo import osr [as 别名]
# 或者: from osgeo.osr import CoordinateTransformation [as 别名]
def _latlon2pixel(lat, lon, input_raster='', targetsr='', geom_transform=''):
'''
Convert latitude, longitude coords to pixexl coords.
From spacenet geotools
'''
sourcesr = osr.SpatialReference()
sourcesr.ImportFromEPSG(4326)
geom = ogr.Geometry(ogr.wkbPoint)
# geom.AddPoint(lon, lat)
geom.AddPoint(lat, lon)
if targetsr == '':
src_raster = gdal.Open(input_raster)
targetsr = osr.SpatialReference()
targetsr.ImportFromWkt(src_raster.GetProjectionRef())
coord_trans = osr.CoordinateTransformation(sourcesr, targetsr)
if geom_transform == '':
src_raster = gdal.Open(input_raster)
transform = src_raster.GetGeoTransform()
else:
transform = geom_transform
x_origin = transform[0]
# print(x_origin)
y_origin = transform[3]
# print(y_origin)
pixel_width = transform[1]
# print(pixel_width)
pixel_height = transform[5]
# print(pixel_height)
geom.Transform(coord_trans)
# print(geom.GetPoint())
x_pix = (geom.GetPoint()[0] - x_origin) / pixel_width
y_pix = (geom.GetPoint()[1] - y_origin) / pixel_height
return (x_pix, y_pix)
###############################################################################
示例9: _wmp2pixel
# 需要导入模块: from osgeo import osr [as 别名]
# 或者: from osgeo.osr import CoordinateTransformation [as 别名]
def _wmp2pixel(x, y, input_raster='', targetsr='', geom_transform=''):
'''
Convert wmp coords to pixexl coords.
'''
sourcesr = osr.SpatialReference()
sourcesr.ImportFromEPSG(3857)
geom = ogr.Geometry(ogr.wkbPoint)
geom.AddPoint(x, y)
if targetsr == '':
src_raster = gdal.Open(input_raster)
targetsr = osr.SpatialReference()
targetsr.ImportFromWkt(src_raster.GetProjectionRef())
coord_trans = osr.CoordinateTransformation(sourcesr, targetsr)
if geom_transform == '':
src_raster = gdal.Open(input_raster)
transform = src_raster.GetGeoTransform()
else:
transform = geom_transform
x_origin = transform[0]
# print(x_origin)
y_origin = transform[3]
# print(y_origin)
pixel_width = transform[1]
# print(pixel_width)
pixel_height = transform[5]
# print(pixel_height)
geom.Transform(coord_trans)
# print(geom.GetPoint())
x_pix = (geom.GetPoint()[0] - x_origin) / pixel_width
y_pix = (geom.GetPoint()[1] - y_origin) / pixel_height
return (x_pix, y_pix)
###############################################################################
示例10: intersect_rect
# 需要导入模块: from osgeo import osr [as 别名]
# 或者: from osgeo.osr import CoordinateTransformation [as 别名]
def intersect_rect(self, config, data_source):
transform = osr.CoordinateTransformation( data_source.layer.GetSpatialRef(), data_source.spatialRef )
point1 = transform.TransformPoint(config['rect'][0], config['rect'][1])
point2 = transform.TransformPoint(config['rect'][2], config['rect'][3])
rect = shapely.geometry.box(point1[0], point1[1], point2[0], point2[1])
for geometry in data_source.geometries:
geometry.geom = geometry.geom.intersection(rect)
示例11: get_tile_swne
# 需要导入模块: from osgeo import osr [as 别名]
# 或者: from osgeo.osr import CoordinateTransformation [as 别名]
def get_tile_swne(tile_job_info, options):
if options.profile == 'mercator':
mercator = GlobalMercator()
tile_swne = mercator.TileLatLonBounds
elif options.profile == 'geodetic':
geodetic = GlobalGeodetic(options.tmscompatible)
tile_swne = geodetic.TileLatLonBounds
elif options.profile == 'raster':
srs4326 = osr.SpatialReference()
srs4326.ImportFromEPSG(4326)
if tile_job_info.kml and tile_job_info.in_srs_wkt:
in_srs = osr.SpatialReference()
in_srs.ImportFromWkt(tile_job_info.in_srs_wkt)
ct = osr.CoordinateTransformation(in_srs, srs4326)
def rastertileswne(x, y, z):
pixelsizex = (2 ** (tile_job_info.tmaxz - z) * tile_job_info.out_geo_trans[1])
west = tile_job_info.out_geo_trans[0] + x * tile_job_info.tilesize * pixelsizex
east = west + tile_job_info.tilesize * pixelsizex
south = tile_job_info.ominy + y * tile_job_info.tilesize * pixelsizex
north = south + tile_job_info.tilesize * pixelsizex
if not tile_job_info.is_epsg_4326:
# Transformation to EPSG:4326 (WGS84 datum)
west, south = ct.TransformPoint(west, south)[:2]
east, north = ct.TransformPoint(east, north)[:2]
return south, west, north, east
tile_swne = rastertileswne
else:
tile_swne = lambda x, y, z: (0, 0, 0, 0) # noqa
else:
tile_swne = lambda x, y, z: (0, 0, 0, 0) # noqa
return tile_swne
示例12: toMgrs
# 需要导入模块: from osgeo import osr [as 别名]
# 或者: from osgeo.osr import CoordinateTransformation [as 别名]
def toMgrs(latitude, longitude, precision=5):
""" Converts geodetic (latitude and longitude) coordinates to an MGRS
coordinate string, according to the current ellipsoid parameters.
@param latitude - latitude value
@param longitude - longitude value
@param precision - precision level of MGRS string
@returns - MGRS coordinate string
"""
# To avoid precision issues, which appear when using more than 6 decimal places
latitude = round(latitude, 6)
longitude = round(longitude, 6)
if math.fabs(latitude) > 90:
raise MgrsException('Latitude outside of valid range (-90 to 90 degrees).')
if (longitude < -180) or (longitude > 360):
raise MgrsException('Longitude outside of valid range (-180 to 360 degrees).')
if (precision < 0) or (precision > MAX_PRECISION):
raise MgrsException('The precision must be between 0 and 5 inclusive.')
hemisphere, zone, epsg = _epsgForWgs(latitude, longitude)
src = osr.SpatialReference()
src.ImportFromEPSG(4326)
dst = osr.SpatialReference()
dst.ImportFromEPSG(epsg)
ct = osr.CoordinateTransformation(src, dst)
x, y, z = ct.TransformPoint(longitude, latitude)
if (latitude < -80) or (latitude > 84):
# Convert to UPS
mgrs = _upsToMgrs(hemisphere, x, y, precision)
else:
# Convert to UTM
mgrs = _utmToMgrs(zone, hemisphere, latitude, longitude, x, y, precision)
return mgrs
示例13: get_coords
# 需要导入模块: from osgeo import osr [as 别名]
# 或者: from osgeo.osr import CoordinateTransformation [as 别名]
def get_coords(geo_ref_points, spatial_ref):
t = osr.CoordinateTransformation(spatial_ref, spatial_ref.CloneGeogCS())
def transform(p):
# GDAL 3 reverses coordinate order, because... standards
if LON_LAT_ORDER:
# GDAL 2.0 order
lon, lat, z = t.TransformPoint(p['x'], p['y'])
else:
# GDAL 3.0 order
lat, lon, z = t.TransformPoint(p['x'], p['y'])
return {'lon': lon, 'lat': lat}
return {key: transform(p) for key, p in geo_ref_points.items()}
示例14: get_tile_swne
# 需要导入模块: from osgeo import osr [as 别名]
# 或者: from osgeo.osr import CoordinateTransformation [as 别名]
def get_tile_swne(tile_job_info, options):
if options.profile == 'mercator':
mercator = GlobalMercator(tileSize=options.tile_size)
tile_swne = mercator.TileLatLonBounds
elif options.profile == 'geodetic':
geodetic = GlobalGeodetic(options.tmscompatible, tileSize=options.tile_size)
tile_swne = geodetic.TileLatLonBounds
elif options.profile == 'raster':
srs4326 = osr.SpatialReference()
srs4326.ImportFromEPSG(4326)
if tile_job_info.kml and tile_job_info.in_srs_wkt:
in_srs = osr.SpatialReference()
in_srs.ImportFromWkt(tile_job_info.in_srs_wkt)
ct = osr.CoordinateTransformation(in_srs, srs4326)
def rastertileswne(x, y, z):
pixelsizex = (2 ** (tile_job_info.tmaxz - z) * tile_job_info.out_geo_trans[1])
west = tile_job_info.out_geo_trans[0] + x * tile_job_info.tilesize * pixelsizex
east = west + tile_job_info.tilesize * pixelsizex
south = tile_job_info.ominy + y * tile_job_info.tilesize * pixelsizex
north = south + tile_job_info.tilesize * pixelsizex
if not tile_job_info.is_epsg_4326:
# Transformation to EPSG:4326 (WGS84 datum)
west, south = ct.TransformPoint(west, south)[:2]
east, north = ct.TransformPoint(east, north)[:2]
return south, west, north, east
tile_swne = rastertileswne
else:
tile_swne = lambda x, y, z: (0, 0, 0, 0) # noqa
else:
tile_swne = lambda x, y, z: (0, 0, 0, 0) # noqa
return tile_swne
示例15: metersToLatLng
# 需要导入模块: from osgeo import osr [as 别名]
# 或者: from osgeo.osr import CoordinateTransformation [as 别名]
def metersToLatLng(self,ds,X,Y):
srs = osr.SpatialReference()
srs.ImportFromWkt(ds.GetProjection())
srsLatLong = srs.CloneGeogCS()
ct = osr.CoordinateTransformation(srs,srsLatLong)
return ct.TransformPoint(X,Y)
#
# Returns Height data (Conditioned DEM or VOID-filled from HydroSHEDS)
#