Проверьте, находится ли точка внутри границPython

Программы на Python
Ответить
Anonymous
 Проверьте, находится ли точка внутри границ

Сообщение Anonymous »

У меня есть список точек, описывающих границы Испании. Я хочу иметь возможность определить, находится ли пара широты и долготы в этих границах. Я пробовал следующее:

Код: Выделить всё

import shapefile
import matplotlib.pyplot as plt
from shapely.geometry import MultiPoint, Point, Polygon
from shapely.geometry.polygon import Polygon
sf = shapefile.Reader(r"\ESP_adm0.shp")
shapes = sf.shapes()
lat = []; lon = []
for i in range(len(shapes[0].points)):
lon.append(shapes[0].points[i][0]);lat.append(shapes[0].points[i][1])
Я знаю, что получаю точки, потому что могу построить график и получить желаемые результаты:

Код: Выделить всё

plt.plot(lon,lat,'.', ms=0.1)
(график в ссылке ниже)
результат графика

Я делаю следующее, чтобы получить указывает на многоугольник:

Код: Выделить всё

    coords = list(zip(lat,lon))
spain_pol = Polygon(coords)
А затем я использую функцию contains, которая всегда получает значение false.

Код: Выделить всё

    spain_pol.contains(Point(0,42))
spain_pol.contains(Point(42,0))
Они оба возвращают false. На самом деле мне не удалось получить ни одного балла. Я пытался вернуть значение True.

Я пробовал всякое, и думаю, что должен упустить что-то фундаментальное. Возможно, проблема в том, что в Испании есть острова и более одного полигона? Я заблудился. Любая помощь приветствуется.

Подробнее здесь: https://stackoverflow.com/questions/492 ... boundaries
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»