我在gis坐标转换方面没有经验,但已管理,使用此页面:http://all-geo.org/volcan01010/2012/11/change-coordinates-with-pyproj/使用以下语句将shapefile坐标从EPSG:28992转换为EPSG:4326,使用python模块pyproj:
wgs84=pyproj.Proj("+init=EPSG:4326")
epsg28992=pyproj.Proj("+init=EPSG:28992")
pyproj.transform(epsg28992, wgs84,x,y)
当我倒转并在谷歌地图中输入这些坐标时,它们会给出正确的位置。所以这很好用。
现在我有了另一个shapefile,我查看shapefile.prj文件来确定使用了什么投影。ESRI对应于ESRI:102686,我在这里发现:http://epsg.io/102686作为ESRI:102686代码不为pyproj所知(给出错误),我必须使用我从同一个站点(http://epsg.io/102686)获得的proj4符号:
wgs84=pyproj.Proj("+init=EPSG:4326")
esri102686=pyproj.Proj("+proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000.0000000001 +datum=NAD83 +units=us-ft +no_defs")
pyproj.transform(esri102686, wgs84,x,y)
我得到坐标,并使用这些谷歌地图: 60.275122729462495,-61.873986125999316,这是在海洋某处.
但是我的结果应该是在美国的剑桥,马里兰州,所以更多的是: 41.00000,-715000000
我做错了什么?
发布于 2014-10-19 20:21:29
“解决了,”preserve_units = True
补充说,如下所示:
esri102686 = pyproj.Proj("+proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333333 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000.0000000001 +datum=NAD83 +units=us-ft +no_defs",preserve_units= True)
现在它很好用。如果可选关键字'preserve_units‘为True,则地图投影坐标中的单位不强制为米。见这里。
发布于 2019-06-10 00:35:34
用pyproj2.x推荐的方法:
>>> import pyproj
>>> pyproj.__version__
'2.2.0'
>>> from pyproj import Transformer
>>> transformer = Transformer.from_crs("ESRI:102686", "EPSG:4326")
>>> transformer
<Concatenated Operation Transformer: pipeline>
Inverse of NAD_1983_StatePlane_Massachusetts_Mainland_FIPS_2001_Feet + NAD83 to WGS 84 (1)
>>> transformer.transform(794207.7467209417, 2461029.5953208264)
(40.999999999999844, -71.0)
https://stackoverflow.com/questions/26452972
复制相似问题