我讨厌坐标系

2020-10-30 09:09:46

应用这个地理空间数据集的三部分心理模型。当其中一个部件丢失或不同步时,会出现许多常见问题。

您的数据集可能有一些垃圾坐标。许多数据格式将";NULL";存储为零。如果您的软件假定使用经度/纬度地理坐标系(GCS),则坐标为(0,0)的点是赤道穿过非洲海岸的本初子午线的位置(幽默地称为空岛)。从Excel导入且未裁剪空行时,有时可能会发生这种情况。

您的数据集可能将其坐标系错误地定义为经度/纬度地理坐标系(GCS)。如果坐标系完全丢失,则可能会发生这种情况,在这种情况下,GIS软件通常会在不通知您的情况下假定GCS。GCS在X轴上仅在-180°西到+180°东之间,在Y轴上在-90°南到+90°北之间。如果您的数据集中的坐标超出此范围,那么您的数据集看起来就像是在地球之外。

解决方案:重新定义坐标系,即将坐标系从GCS更改为正确的坐标系,但不更改坐标。

您的数据集可能具有错误的坐标系。这是前面问题的更一般情况。如果坐标系完全丢失,则可能会发生这种情况,在这种情况下,GIS软件通常会假设它与以前加载的数据集或在项目或地图文档中设置的坐标系相同。

解决方案:重新定义坐标系,即将坐标系更改为正确的坐标系,而不是将坐标更改为正确的坐标系。

看看您确实知道的两件事:属性和坐标。数据点的属性提供了它在地球上所处位置的上下文。大多数GIS软件会将图层属性中的最小和最大坐标显示为范围或边界框。在此基础上,对重新定义数据集时应使用的坐标系进行一些检测工作。

如果属性指示坐标应该位于的大致经度、纬度,请尝试反向查找。这将迭代每个明确定义的坐标系,取消将X,Y坐标投影到WGS84,并将误差测量到已知的经纬度。误差小于几百米表示一个合理的预测,尽管这不够精确,无法确定GCS。您可以自己运行此示例代码,或使用以下形式:

如果坐标的X值介于-180和180之间,Y值介于-90和90之间,则可能需要重新定义为经纬度地理坐标系(GCS),如WGS84。

如果坐标具有较大的绝对值,请尝试重新定义为本地坐标系,如UTM、Gauss-Krüger、州平面或国家栅格。还可以考虑尝试邻近区域,例如,如果UTM区域19N错误,请尝试UTM区域18N。

如果属性表明数据集在美国,则在与Freedom Units之间进行转换时可能会出现问题。试着将数据点的坐标乘以/除以3.28084,将英尺转换为米/米到英尺,看看是否将其放置在正确的位置。

如果最小X/Y坐标均为零,最大X/Y坐标均为正,则数据集可能已从非地理空间软件(如Photoshop、Illustrator或Inkscape)导出。这在数据集垂直翻转时尤其可能,因为这些编辑器通常会向下增加Y轴。您需要手动对数据集进行地理配准才能使用它,这会同时更改坐标和坐标系。

您的数据集可能具有错误的经度/纬度地理坐标系(GCS)。不同的GCS定义略有不同的地球大小/形状(它们的椭球体)和地球上不同的位置(它们的基准面)。因此,两个不同的GCS中的相同经度/纬度坐标可能会出现偏移,尽管彼此之间通常在几十米之内。即使您使用的投影坐标系(PCS)的单位不是经度/纬度,也会发生这种情况,因为PCS中嵌入了GCS。解决方案:重新定义坐标系,即将坐标系而不是坐标更改为以下选项之一。

如果您的数据集在美国,请尝试重新定义为NAD27、NAD83或WGS84。

这取决于您的软件。请记住,重新定义意味着修改了有关坐标系的元数据,但不修改坐标。这与重新投影和变换形成对比,后者同时修改坐标系和坐标。

在QGIS中,对于矢量数据集,请使用矢量常规工具集中的指定投影工具,而不是重新投影图层工具。

在QGIS中,对于栅格数据集,请使用GDAL&34;工具集中的指定投影工具,而不是扭曲(重新投影)工具。

在命令行中,对于矢量数据集,请使用带-a_srs参数的ogr2ogr,而不是-t_srs参数。

您的数据集可能位于不等距的坐标系中。大多数GIS软件在数据集或数据框的坐标系中使用欧几里得数学愚蠢地计算距离、面积和体积,而不管它们是否等距离。根据与投影相关的畸变量,这可能会在您没有意识到的情况下导致(极大的)不正确的测量。在墨卡托投影的常见情况下,距离放大约1/cos(纬度)。

将数据集(更改坐标和坐标系)重新投影到适当的本地坐标系。调整了一个局部坐标系,以便为地球的受限区域提供非常精确的欧几里德测量。例如UTM、Gauss-Krüger、州平面和等距国家网格(如等距圆锥)。

执行测地线测量。这会取消将坐标投影到经度/纬度(如果投影),然后计算出沿GCS椭球体的精确距离。但请注意:每个计算都比欧几里得版本慢,并且精度的提高与局部坐标(以前的解决方案)相比微不足道,除非您需要亚厘米精度。默认情况下,这是在QGIS中完成的,可以在ArcGIS Pro和ArcMap中启用,并且可以使用GeraphicLib等开源库以编程方式执行。

墨卡托是唯一的保角柱面地图投影。柱面地图投影意味着整个地球适合于一个矩形,这对于用来处理矩形图像的数据处理算法来说是非常方便的。保角意味着角度和形状始终保持不变:北向始终向上,正方形始终为正方形,等等。使用非保角投影会使放大时的物体看起来被拉伸、挤压和/或旋转。

墨卡托确实扩大了距离赤道更远的区域,但至少这种扭曲在水平和垂直方向上是相同的。而且计算一个比例因子来修正测量也是微不足道的。只有在查看具有一系列不同比例因子的全球比例地图时,才会出现扭曲问题,但大多数地图不是全球比例地图,在这种情况下有很多更好的投影可供使用。

问得好。我们使用平面投影坐标系而不是始终使用经纬度地理坐标系的原因有很多:

平面测量无处不在。常见的GIS要素(如财产边界、道路中心线、森林、湖泊等)都是按欧几里得距离、面积和体积计算的,而不是按角度计算的。

平面尺寸更容易计算。用毕达哥拉斯定理测量平面上的距离比用哈弗正弦公式测量球面上的距离容易,比用文森西公式测量椭球面上的距离容易得多,更不用说面积和体积了。

在GNSS之前,经度是很难计算出来的。可靠的经度测定方法只有几百年的历史,而GPS只有几十年的历史。使用与固定纪念碑的笛卡尔距离进行测量和大地测量有很大的惯性。

您的数据集可能测量的是椭球体以上的高度,而不是高于海平面(大地水准面)的高度,反之亦然。海平面跟随着大地水准面,由于重力的微小区域差异,大地水准面是一个凹凸不平的表面。像GPS一样,GNSS不测量大地水准面以上的高度,而是测量被称为椭球体的理想化的数学表示法。一些GPS设备会自动将椭球面高度转换为高于海平面的高度(又名正交高程又称大地水准面高程),但许多设备不能。

解决方案:在Proj中使用cs2cs,或者使用较旧的工具(如VDatum)在椭球体和正交(高于海平面)高度之间进行转换。对于相当小的数据集,可以将恒定偏移量应用于所有Z坐标。