为什么使用错误的投影时我得到正确的区域和相交的区域?


11

我需要计算多边形(一些真实的地理对象,如湖泊,城市,国家等)的面积和相交面积。多边形位于俄罗斯的加利福尼亚州,新西兰,瑞典的Anadyr

所有多边形都在WGS84中。

我使用GeoTool Java API所做的工作:

  1. 使用EPSG:3488,EPSG:NAD83(NSRS2007)/ California Albers和计算的面积和重叠面积投影所有多边形。
  2. 使用World_MollweideWorld_Eckert_IV进行了相同的操作
  3. 为来自加利福尼亚,新西兰等地的多边形选择了“ 局部特定的投影

我认为#3是最准确的结果,因为我选择了覆盖多边形区域的投影

结果:

与#3相比,#2表现最差

'#1和#3区域和交叉区域的差异小于0.1%

为什么?对于来自瑞典的多边形,我选择了绝对错误的投影EPSG:3488(加利福尼亚),得到的面积和交集面积几乎相同?

UPD:看来我没有正确解释我的困惑。这是带有说明的示例输出

#area_from_new_zealand_1
EPSG_27200 area[11733479] CRS[World_Mollweide] area[11736023] diff[2544] [0.0%]
EPSG_27200 area[11733479] CRS[World_Eckert_IV] area[11736033] diff[2554] [0.0%] 
EPSG_27200 area[11733479] CRS[EPSG:NAD83(NSRS2007) / California Albers] area[11736034] diff[2555] [0.0%] 

#area_from_new_zealand_2
EPSG_27200 area[2952725]  CRS[World_Mollweide] area[2953281] diff[556] [0.0%] 
EPSG_27200 area[2952725]  CRS[World_Eckert_IV] area[2953342] diff[617] [0.0%] 
EPSG_27200 area[2952725]  CRS[EPSG:NAD83(NSRS2007) / California Albers] area[2953467] diff[743] [0.0%] 

#intersection_area_between_two_new_zealand_areas
EPSG_27200 intersection area[1001857] CRS[World_Mollweide]                          area[1002082] diff[225] [0.0%] 
EPSG_27200 intersection area[1001857] CRS[World_Eckert_IV]                          area[1002082] diff[225] [0.0%] 
EPSG_27200 intersection area[1001857] CRS[EPSG:NAD83(NSRS2007) / California Albers] area[1002096] diff[239] [0.0%] 


#area_from_alaska_1
EPSG_3338 area[56278347]    CRS[World_Mollweide] area[56041510] diff[236837] [0.4%] 
EPSG_3338 area[56278347]    CRS[World_Eckert_IV] area[56041585] diff[236763] [0.4%] 
EPSG_3338 area[56278347]    CRS[EPSG:NAD83(NSRS2007) / California Albers] area[56278426] diff[79] [0.0%] 

#area_from_alaska_2
EPSG_3338 area[17564799282] CRS[World_Mollweide] area[17486015889] diff[78783393] [0.4%] 
EPSG_3338 area[17564799282] CRS[World_Eckert_IV] area[17486869816] diff[77929466] [0.4%]
EPSG_3338 area[17564799282] CRS[EPSG:NAD83(NSRS2007) / California Albers] area[17566197286] diff[1398004] [0.0%] 

 #intersection_area_between_two_alaska_areas 
EPSG_3338 intersection area[43808167] CRS[World_Mollweide] area[45066901] diff[1258734] [2.8%] 
EPSG_3338 intersection area[43808167] CRS[World_Eckert_IV] area[45163183] diff[1355016] [3.0%] 
EPSG_3338 intersection area[43808167] CRS[EPSG:NAD83(NSRS2007) / California Albers] area[43885182] diff[77015] [0.2%]

我的困惑是: EPSG:3488设计用于加利福尼亚

我为新西兰阿拉斯加地区选择了“错误”的预测EPSG:3488,并且看到结果计算与正确的预测没有“显着”差异。EPSG:3488的性能甚至比设计用于世界各地的Eckert_IV投影仪Mollweide还要好。


我还发现,这两个预测之间几乎没有可观察到的差异,但是差异仍然存在。在ArcGIS中,除非您的数据位于同一投影中,否则即使在WGS84与NAD83之间存在很小的差异,也无法创建“功能数据集”。以下网页对我很有帮助,希望您也觉得它很有用。differentbetween.net/technology/…我本来应该将此作为评论,但我没有50名代表:(
Justin Q

您将结果与什么进行比较?
伊恩·透顿

@iant,请参阅更新的问题。我添加了比较输出。
Capacytron

您可以尝试使用AUTO投影(UTM以用户提供的点为中心)-将CRS构造为String code =“ AUTO:42001,” + x +“,” + y; // System.out.println(code); CoordinateReferenceSystem auto = CRS.decode(code);
伊恩·透顿

Answers:


9

“ EPSG:3488,EPSG:NAD83(NSRS2007)/ California Albers”是等面积投影。 它基于为北半球定义的Albers Conic。因为瑞典在其定义范围内,所以它在瑞典的面积相等。这意味着(直到浮点舍入误差)它将给出绝对正确的区域。

无论是Mollweide也不埃克特完全相等面积,但是(如肯尼迪麻烦指出了评论)它们近似左右。它们引入的变形将可与球体和椭圆体之间的差异相媲美,两者之间的差异仅限于300的三分之一(0.3%)。


1
Bill,Eckert IV和Mollweide是等面积投影,但只有球形算法。
mkennedy

1
@mkennedy糟糕-我应该检查一下。谢谢您的纠正,梅利塔。我将修复该评论。
ub

1
@mkennedy,所以ESRI:53009和ESRI:54009实际上是相同的吗?我看到Snyder没有在椭球上给出公式,那么ESRI基于WGS84的World_xxx投影的含义是什么?
AndreJ

1
Esri:53009(和其他53xxx条目)使用R = 6371000.0 m的基于球面的GeoCRS。Esri:54xxx范围使用WGS84 geoCRS,因此使用的实际半径是半长轴6378137.0。它们都被添加为测试/样品定义。
mkennedy

2
南极距离瑞典数万公里:它位于南极洲。北极距离瑞典只有几千公里。但这并不重要:如果使用等面积投影,并且能够投影要计算其面积的区域,那么它将正确计算出该面积(针对其所基于的基准)。一些等面积投影可以投影整个世界,但单个点除外(取决于点)。
ub

1

@whuber的断言,等面积投影“将给出绝对正确的区域”带有星号,即假设多边形的边缘在所述投影中为直线。这通常是一个很好的近似值,尤其是在边缘较短的情况下。但很少严格如此。

另一方面,如果多边形的边缘是测地线或菱形线,则可以使用其他技术来确定精确到四舍五入的区域。我的在线平面仪实现了这些。试试看。


嗨!感谢您的所有投入。所以想要摘要吗?EPSG:3488使用Albers等面积投影,这就是为什么它即使在南极也能正确计算出全世界的面积吗?
Capacytron

阿尔伯斯等面积可能会为您的应用程序提供足够不错的结果。但是,盲目地使用此投影来计算南极(环绕极点)的面积会产生无意义的结果。因此,对于一般用途,我建议您计算测地线面积,这样您就不必担心每个特定等面积投影的局限性。
cffk

谢谢回复。不幸的是,我们需要以米为单位的平方面积。
Capacytron,2015年

平面仪工具可为您提供以平方米为单位的面积。
cffk

Java包Geographiclib-Java提供了相同的功能。该文档包含用于计算指定为一组纬度/经度点的多边形面积的代码,结果以平方米为单位。
cffk
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.