将ESRI投影坐标转换为经纬度

4
我有一个大型的数据集,其中包含“NAD 1983 StatePlane Michigan South FIPS 2113 Feet”(又称ESRI 102690)中的x,y坐标。我想将它们转换为经纬度点。
理论上,这是proj可以处理的内容,但是文档并没有给我任何线索-它似乎描述了更复杂的情况。
我尝试使用python接口,代码如下:
from pyproj import Proj
p = Proj(init='esri:102690')
sx = 13304147.06410000000 #sample points
sy = 288651.94040000000
x2, y2 = p(sx, sy, inverse=True)

但是那会得到极不准确的输出。

有一个JavaScript库,但是我需要处理大约50,000个点,所以似乎不太适合。


我的做法:

我创建了一个名为ptest的文件,每一对坐标都单独占据一行,x和y坐标之间用空格分隔,就像这样:

13304147.06410000000 288651.94040000000
...

然后我将该文件输入命令并将结果导出到输出文件:

$>cs2cs -f %.16f +proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 
+lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 
+datum=NAD83 +to_meter=0.3048006096012192 +no_defs +zone=20N +to 
+proj=latlon ptest > out.txt
2个回答

4
如果您只需要重新投影并且可以对文本文件进行一些数据挖掘,可以使用任何您喜欢的工具,并使用http://spatialreference.org/ref/esri/102690/作为参考。
例如,使用Proj4并将其存储在shell/cmd文件中,然后使用proj4调用输入文件(适用于linux/windows版本),无论您的数据集大小如何都没有问题。
cs2cs +proj=latlong +datum=NAD83 +to +proj=utm +zone=10  +datum=NAD27 -r <<EOF
cs2cs -f %.16f +proj=utm +zone=20N +to +proj=latlon - | awk '{print $1 " " $2}

在您的情况下,可能是这样的:
cs2cs -f %.16f +proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41.5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs +zone=20N +to +proj=latlon

http://trac.osgeo.org/proj/wiki/man_cs2cs

http://trac.osgeo.org/proj/


我仍然对cs2cs的用法感到困惑。我应该如何输入我的两个样本点?我应该如何格式化一个包含多个点的文件?我该如何将该文件交给cs2cs?文档似乎建议使用以制表符分隔值的文件,每对放在自己的行上,最后一行是“EOF”。 - Matt Hampel
1
我有一个可行的示例,但据我回忆,它比人们想象的要简单,我使用 -E 来获取输入坐标并在所有参数之后将其输出,第一个参数是源文件。所有内容都发送到标准输出,因此只需使用 cs2cs +++lotofparameters+++ sourcefile > outputfile 即可。 - Jonke
谢谢,这比看起来容易多了。谢谢! - Matt Hampel

3

如果您有 TXT、CSV 或 XLS 文件中的坐标,可以使用 CTRL+C 将它们插入到 http://cs2cs.mygeodata.eu ,在那里您可以设置适当的输入和期望的输出坐标系统。它支持多种格式的数千个坐标...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接