相关疑难解决方法(0)

验证Google地图中的某个点是Land还是Water

..然后谷歌地图"划分水域的水"

嗯,不是在圣经的意义上,但..

我想知道我有什么选择来验证[Lat,Lon]的点是土地还是水.

谷歌地图显然有这些数据(水体是蓝色的) - 但是我可以使用API​​中的某些东西吗?如果没有 - 他们是不是因为他们没有想到它而服务它?还是因为它太复杂了?

我没有找到任何关于这个问题的信息 - 除了一些类似的问题(比如寻找地形类型或海拔 - 但这不是我需要的).

那有分离的层吗?一个选项?命令?或者我应该手动去做?

我能想到如何处理这个问题的唯一方法(我是否需要手动执行)是检查每个服务的磁贴的确切点 - 然后检查该Google地图色调的RGB值.这只是在理论上 - 因为在实践中 - 我不知道如何实现这一点,第一个障碍是我不知道如何将瓷砖上的像素位置转换为[LatLon]点,例如

现成的解决方案会更容易.

请注意,我不需要世界上所有的水(例如 - 我不关心溪流,小池塘,大多数河流或邻居的游泳池.我需要一个人可以在没有浮动车辆的情况下冒险的地方)

编辑我

阅读评论后:提升方法不可靠,海平面下面有太多地方(你可以在这里查看 "最深"10的列表http://geology.com/below-sea-level/)海平面(湖泊)上面有太多内陆水体.反向地理定位方法不可靠,因为它会多次返回地理政治实体,如城市或州 - 或ZERO.在问这个问题之前我已经研究了那些伪解决方案 - 但他们都没有回答过这个问题 - 这些方法充其量只是"猜测".

javascript google-maps google-maps-api-3

100
推荐指数
7
解决办法
4万
查看次数

更快速的多边形交叉方式

我有大量的多边形(~100000),并尝试找到一种智能的方法来计算它们与常规网格单元的交叉区域.

目前,我正在使用形状(基于它们的角坐标)创建多边形和网格单元.然后,使用一个简单的for循环我遍历每个多边形并将其与附近的网格单元进行比较.

只是一个小例子来说明多边形/网格单元格.

from shapely.geometry import box, Polygon
# Example polygon 
xy = [[130.21001, 27.200001], [129.52, 27.34], [129.45, 27.1], [130.13, 26.950001]]
polygon_shape = Polygon(xy)
# Example grid cell
gridcell_shape = box(129.5, -27.0, 129.75, 27.25)
# The intersection
polygon_shape.intersection(gridcell_shape).area
Run Code Online (Sandbox Code Playgroud)

(顺便说一句:网格单元的尺寸为0.25x0.25,多边形的最大尺寸为1x1)

实际上,对于具有大约0.003秒的单个多边形/网格单元组合,这是非常快的.但是,在大量多边形上运行此代码(每个多边形可以与几十个网格单元相交)在我的机器上花费大约15分钟以上(最多30分钟,具体取决于交叉网格单元的数量),这是不可接受的.不幸的是,我不知道如何编写多边形交集的代码来获得重叠区域.你有什么建议吗?有一种形状的替代品吗?

python numpy shapely

37
推荐指数
2
解决办法
4万
查看次数

模块“shapely”没有属性“geometry”错误

我正在使用克林特·哈里斯的解决方案

import fiona
import shapely

with fiona.open("./areas_shp.shp") as fiona_collection:
    shapefile_record = next(iter(fiona_collection))
    shape = shapely.geometry.asShape( shapefile_record['geometry'] )
    point = shapely.geometry.Point(coords[0])
    for point in coords:
        if (shape.contains(point)):
            print("yay")
Run Code Online (Sandbox Code Playgroud)

在这里,我只是用 shapefile 测试一个坐标,但看起来代码可能已经过时了。我已经更改shapefile_record = fiona_collection.next()shapefile_record = next(iter(fiona_collection)),但这个错误我似乎无法解决:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-8-18ca8979d01f> in <module>
     38 with fiona.open("./areas_shp.shp") as fiona_collection:
     39     shapefile_record = next(iter(fiona_collection))
---> 40     shape = shapely.geometry.asShape( shapefile_record['geometry'] )
     41     point = shapely.geometry.Point(coords[0])
     42     for point in coords:

AttributeError: module 'shapely' has no attribute …
Run Code Online (Sandbox Code Playgroud)

python python-import attributeerror shapely

2
推荐指数
1
解决办法
9445
查看次数