Shapely.geometry.Point: примеры (PYTHON)
shapely.geometry.Point(x: float, y: float, z: float=None): shapely.geometry.PointФункция shapely.geometry.Point
Класс shapely.geometry.Point представляет собой точечный геометрический объект в двумерном пространстве. Он применяется для моделирования географических координат, позиций на плоскости, точек данных в системах координат. Этот класс является частью библиотеки Shapely, предназначенной для выполнения геометрических операций.
Конструктор класса принимает координаты точки в виде аргументов. Основные параметры:
- x - координата по оси X (обязательный числовой аргумент).
- y - координата по оси Y (обязательный числовой аргумент).
- z - необязательная координата по оси Z для создания трехмерной точки.
Метод возвращает объект типа Point, который обладает стандартными свойствами геометрических объектов Shapely: area (всегда 0), length (всегда 0), bounds (кортеж с координатами минимума и максимума), coords (итератор по координатам), xy (кортеж массивов координат). Объект поддерживает операции пространственного анализа, такие как вычисление расстояния до других геометрий, проверка на пересечение или принадлежность.
Простые варианты использования
Создание точки с двумя координатами:
from shapely.geometry import Point
point_2d = Point(10, 20)
print(point_2d)POINT (10 20)
Создание трехмерной точки:
point_3d = Point(5, 15, 25)
print(point_3d)POINT Z (5 15 25)
Получение координат точки:
print(point_2d.x, point_2d.y)
print(list(point_2d.coords))
print(point_2d.xy)10.0 20.0
[(10.0, 20.0)]
(array('d', [10.0]), array('d', [20.0]))Расчет расстояния между точками:
from shapely.geometry import Point
point_a = Point(0, 0)
point_b = Point(3, 4)
distance = point_a.distance(point_b)
print(distance)5.0
Похожие функции в Python
В библиотеке geopandas точки создаются аналогично через shapely.geometry.Point, но хранятся в GeoSeries для пространственных операций с данными. В библиотеке pyproj класс Proj используется для преобразования координат, а не для создания геометрии. Класс shapely.geometry.MultiPoint позволяет создавать коллекции точек. Для простых математических расчетов с координатами без геометрических операций достаточно использовать кортежи или списки.
Аналоги в других языках
В JavaScript библиотека Turf.js предоставляет функцию turf.point() для создания точки в формате GeoJSON:
const point = turf.point([10, 20]);
console.log(point);{ type: 'Feature', geometry: { type: 'Point', coordinates: [10, 20] } }В Java с использованием JTS создание точки выглядит так:
import org.locationtech.jts.geom.*;
GeometryFactory factory = new GeometryFactory();
Point point = factory.createPoint(new Coordinate(10, 20));В C# с библиотекой NetTopologySuite:
var factory = new GeometryFactory();
var point = factory.CreatePoint(new Coordinate(10, 20));В SQL (PostGIS) используются функции ST_Point или ST_MakePoint:
SELECT ST_MakePoint(10, 20);В Golang библиотека orb реализует точку как срез:
import "github.com/paulmach/orb"
point := orb.Point{10, 20}Основное отличие - в способе представления данных: Shapely использует объектный подход, тогда как в других языках часто применяются массивы или специализированные структуры.
Частые ошибки
Передача некорректного количества аргументов:
Point(10) # Ошибка: ожидаются два аргументаTypeError: Point() takes at least 2 arguments (1 given)
Использование нечисловых значений:
Point('ten', 20)TypeError: float() argument must be a string or a real number, not 'str'
Обращение к несуществующему атрибуту z для двумерной точки:
point_2d = Point(10, 20)
print(point_2d.z)AttributeError: 'Point' object has no attribute 'z'
Неправильный порядок координат (широта, долгота вместо долготы, широты):
point = Point(55.7558, 37.6173) # Правильно для большинства GIS: (долгота, широта)
print(point)POINT (55.7558 37.6173)
Эта ошибка концептуальная, а не синтаксическая, но она часто встречается при работе с географическими данными.
Изменения в последних версиях
В Shapely 2.0 произошла полная переработка библиотеки с переходом на использование массивов GEOS C API. Класс Point теперь наследуется от Geometry и поддерживает новые методы. Добавлена возможность создания точек непосредственно из массивов NumPy. В версии 2.0 изменилось внутреннее представление координат, что повысило производительность при массовом создании объектов.
Расширенные примеры
Создание точки из итерируемого объекта:
coords = [30, 40]
point = Point(coords)
print(point)POINT (30 40)
Использование точек в пространственных операциях:
from shapely.geometry import Polygon, LineString
polygon = Polygon([(0, 0), (10, 0), (10, 10), (0, 10)])
point_inside = Point(5, 5)
point_outside = Point(15, 15)
print(point_inside.within(polygon))
print(point_outside.within(polygon))True False
Создание буфера вокруг точки:
buffered = Point(0, 0).buffer(5)
print(buffered.area)78.53981633974483
Преобразование точки в другие форматы:
import json
point = Point(10, 20)
geojson = json.dumps(point.__geo_interface__)
print(geojson){"type": "Point", "coordinates": [10.0, 20.0]}Использование точек в условиях:
points = [Point(i, i*2) for i in range(5)]
filtered = [p for p in points if p.x > 2]
print(filtered)[, ]
Работа с трехмерными точками:
point_3d = Point(1, 2, 3)
print(point_3d.has_z)
print(point_3d.z)True 3.0
Использование точек для создания более сложных геометрий:
from shapely.geometry import MultiPoint
multipoint = MultiPoint([Point(0, 0), Point(1, 1), Point(2, 2)])
print(multipoint.convex_hull)POLYGON ((0 0, 2 2, 1 1, 0 0))
питон shapely.geometry.Point function comments
- питон shapely.geometry.Point - аргументы и возвращаемое значение
- Функция python shapely.geometry.Point - описание
- shapely.geometry.Point - примеры
- shapely.geometry.Point - похожие методы на python
- shapely.geometry.Point на php, c#, sql, java
- shapely.geometry.Point изменения python
- Примеры shapely.geometry.Point на питон