将平铺坐标转换为像素到地理坐标

Posted

技术标签:

【中文标题】将平铺坐标转换为像素到地理坐标【英文标题】:Converting tile coordinates to pixels to geographic coordinates 【发布时间】:2012-01-03 02:51:07 【问题描述】:

网络上有很多类似的问题,但没有一个涉及 ios

如果您在缩放级别 2 (4^N) 和 2我对美国感兴趣的瓷砖具有(0,1)和(1,1)的瓷砖坐标,两者都是标准的256X256 png。这 2 个图块代表降水图像。

为了适当地覆盖我的降水数据,我需要纬度和经度坐标。

This is a great link 这教会了我很多东西,但我仍然迷失在坐标部分。为了获得地图图块 ex (1,1) 的像素表示,我是否将 x 和 y 都乘以 256?

我觉得我可以做到这一点,如果我能计算出瓷砖地图坐标到像素到纬度/经度值。

也许有人可以把我引向正确的方向。

【问题讨论】:

【参考方案1】:

除非我有误解,否则我必须质疑您为什么要手动进行此计算。 MKMapView 有四种方法可以将像素转换为坐标并返回。前两个与积分有关:

- (CGPoint)convertCoordinate:(CLLocationCoordinate2D)coordinate toPointToView:(UIView *)view
- (CLLocationCoordinate2D)convertPoint:(CGPoint)point toCoordinateFromView:(UIView *)view

此外,您可以来回转换矩形:

- (CGRect)convertRegion:(MKCoordinateRegion)region toRectToView:(UIView *)view
- (CGRect)convertRegion:(MKCoordinateRegion)region toRectToView:(UIView *)view

这些都可以在MKMapView 参考文献here 中找到。

【讨论】:

谢谢!这就说得通了。所以本质上,坐标为 (1,1) 的地图图块实际上只是一个 CGPoint,我可以在其中使用第二种方法将其转换为 2d 坐标? @user1042402:是的,应该可以。因此,如果您从任何视图中获取 CGPoint,您可以将它和视图传递给地图视图。然后你会得到一个 CLLocationCoordinate2D,它是一个有两个值的结构,纬度和经度。然后,您可以使用这些值来获取地图数据。当然你也可以使用第一种方法从 Lat/Lng 值中获取 CGPoints。【参考方案2】:

好吧,我可能已经回答了我的一个问题,尽管我没有得到我想的结果。通过使用

CGPoint touchPoint = [gestureRecognizer locationInView:self.mapView];
NSLog(@"Touch point is %f %f", touchPoint.x, touchPoint.y);

我能够触摸地图周围的点并在日志语句中获取 CGPoints。文档指出,根据this,点 (0,0) 将始终位于西北角

我得到的实际值是 (1.00000, 2.00000)(在西北角)。但同样,文档说在缩放级别 0 时,地图将由一个大图块组成,然后相对于缩放级别呈指数增长。我觉得我离解决方案越来越近了。

【讨论】:

以上是关于将平铺坐标转换为像素到地理坐标的主要内容,如果未能解决你的问题,请参考以下文章

如何将地理坐标转换为像素?

如何使用 cartopy 将显示坐标转换为地理坐标(纬度、经度)?

GIS中怎么将投影坐标转换成地理坐标

arcgis坐标转换

常用坐标系简介以及转换(附代码)

iOS 如何在 2015 年将地址转换为 GPS 坐标(地理编码)?