0
我有幾點,我想檢查它們是否包含在一個多邊形。多邊形和點以緯度和經度表示。勻稱無法精確找到多邊形內的點
以下是重現我的方案和谷歌地圖打印屏幕的代碼,它看起來像多邊形,多邊形內/外的點根據Shapely。
import pyproj
from shapely.geometry import Polygon, Point
from shapely.ops import transform
from functools import partial
import numpy as np
polygon_array = [(1.4666748046875, 49.088257784724675),
(1.4447021484375, 47.42808726171425),
(2.889404296875, 47.42808726171425),
(2.8729248046875, 49.08466020484928),
(-0.0054931640625, 47.97521412341619),
(0.010986328125, 46.18743678432541),
(1.4227294921875, 46.1912395780416),
(1.4337158203125, 48.4887),
(-1.043701171875, 46.65320687122665),
(-1.043701171875, 44.6061127451739),
(0.0164794921875, 44.5982904898401),
(-0.0054931640625, 46.6795944656402)]
simple_polygon = Polygon(polygon_array)
projection = partial(
pyproj.transform,
pyproj.Proj(init='epsg:4326'),
pyproj.Proj('+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m [email protected] +no_defs'))
polygon = transform(projection, simple_polygon)
for latitude in np.arange(44.5435052132, 49.131408414, 0.071388739257):
for longitude in np.arange(-0.999755859375, 2.99926757812, 0.071388739257):
point = transform(projection, Point(longitude, latitude))
if polygon.contains(point):
print "%s, %s" % (latitude, longitude)
這裏是多邊形看起來在地圖上的內容:
這裏是什麼樣子的點(這裏表示爲標記) 「內部」 的多邊形:
而「外部」點:
這裏的問題是,這些點很明顯地脫離了多邊形,內部或外部。我對這個投影方案很陌生,所以我可能會錯過一些東西。
預先感謝您
您的多邊形看起來並不像您繪製的圖片什麼(最好的,我可以告訴)。 [小提琴](http://jsfiddle.net/geocodezip/sbcd0m22/) – geocodezip
@geocodezip,是的!你是正確的!我搞砸了多邊形路徑,並把它放在那裏。我不會說這個。謝謝你一噸。我建議你把你的評論作爲答案,以便我可以將其標記爲「答案」。不夠感謝你。 – Eduardo