Python 没有GDAL的shapefile的坐标变换
Python coordinate transformation of shapefiles without GDAL
我在我的 Anaconda Spyder 中使用 GDAL 时遇到了很大的问题,但我需要进行以下坐标转换:
src_spatialReference = osr.SpatialReference()#input coordinate system
src_spatialReference.ImportFromEPSG(inputCoordSystem) #import coordinate system from EPSG code
dst_spatialReference = osr.SpatialReference()#output coordinate system
dst_spatialReference.ImportFromEPSG(outputCoordSystem) #import coordinate system from EPSG code
transform_coord = osr.CoordinateTransformation(src_spatialReference,dst_spatialReference)
#transform geometry object
geomObj = ogr.CreateGeometryFromWkt(geomObj.wkt) #get geometric Object as WKT (well known text) and transform it to org geoemtry
geomObj.Transform(transform_coord) #transform object to other coordinate system
geomObjTransf=shapely.wkt.loads(geomObj.ExportToWkt()) #create shapely object form org geometry objekt
有人知道如何在没有 GDAL 的情况下做到这一点吗?
我用 shapely
中的 transform
尝试过,但我读到它仅适用于点,我需要转换 shapefile,它仅适用于点。
我在 Anaconda 中使用 Spyder 3.2.8 和 Python 3.6.4
非常感谢您的帮助!
也许这不是最好的解决方案,但这个现在适合我:
from shapely.geometry import Point
from shapely.geometry import LineString
from pyproj import Proj, transform
df_all = df
# store the measured points in a list
measuredpoints_list = np.array([df_all.LON20Hz.tolist(), df_all.LAT20Hz.tolist()]).T
# transform them to a proj. coord. system
measuredpoints_listtrans = []
for i in range(len(measuredpoints_list)):
measuredpoints_listtrans.append(PyProjTransform(4326, 3581, measuredpoints_list[i]))
cl_trans = []
for i in range(len(cl)):
cl_trans.append(PyProjTransform(4326, 3581, cl[i]))
使用shapely
可以逐点变换shapefile,之后,您可以创建一个包含变换点的新数组。有了这个,你就可以开始进一步的计算了。
我在我的 Anaconda Spyder 中使用 GDAL 时遇到了很大的问题,但我需要进行以下坐标转换:
src_spatialReference = osr.SpatialReference()#input coordinate system
src_spatialReference.ImportFromEPSG(inputCoordSystem) #import coordinate system from EPSG code
dst_spatialReference = osr.SpatialReference()#output coordinate system
dst_spatialReference.ImportFromEPSG(outputCoordSystem) #import coordinate system from EPSG code
transform_coord = osr.CoordinateTransformation(src_spatialReference,dst_spatialReference)
#transform geometry object
geomObj = ogr.CreateGeometryFromWkt(geomObj.wkt) #get geometric Object as WKT (well known text) and transform it to org geoemtry
geomObj.Transform(transform_coord) #transform object to other coordinate system
geomObjTransf=shapely.wkt.loads(geomObj.ExportToWkt()) #create shapely object form org geometry objekt
有人知道如何在没有 GDAL 的情况下做到这一点吗?
我用 shapely
中的 transform
尝试过,但我读到它仅适用于点,我需要转换 shapefile,它仅适用于点。
我在 Anaconda 中使用 Spyder 3.2.8 和 Python 3.6.4
非常感谢您的帮助!
也许这不是最好的解决方案,但这个现在适合我:
from shapely.geometry import Point
from shapely.geometry import LineString
from pyproj import Proj, transform
df_all = df
# store the measured points in a list
measuredpoints_list = np.array([df_all.LON20Hz.tolist(), df_all.LAT20Hz.tolist()]).T
# transform them to a proj. coord. system
measuredpoints_listtrans = []
for i in range(len(measuredpoints_list)):
measuredpoints_listtrans.append(PyProjTransform(4326, 3581, measuredpoints_list[i]))
cl_trans = []
for i in range(len(cl)):
cl_trans.append(PyProjTransform(4326, 3581, cl[i]))
使用shapely
可以逐点变换shapefile,之后,您可以创建一个包含变换点的新数组。有了这个,你就可以开始进一步的计算了。