Shapely geometriler ve mekânsal ilişkiler

Python ile Coğrafi Verilerle Çalışma

Dani Arribas-Bel

Geographic Data Science Lab (University of Liverpool)

Skaler geometri değerleri

cities = geopandas.read_file("ne_110m_populated_places.shp")
cities.head()
           name                                      geometry
0  Vatican City   POINT (12.45338654497177 41.90328217996012)
1    San Marino     POINT (12.44177015780014 43.936095834768)
2         Vaduz   POINT (9.516669472907267 47.13372377429357)
3       Lobamba  POINT (31.19999710971274 -26.46666746135247)
4    Luxembourg   POINT (6.130002806227083 49.61166037912108)
brussels = cities.loc[170, 'geometry']
print(brussels)
POINT (4.33137074969045 50.83526293533032)
Python ile Coğrafi Verilerle Çalışma

Skaler geometri değerleri

brussels = cities.loc[170, 'geometry']
print(brussels)
POINT (4.33137074969045 50.83526293533032)
type(brussels)
shapely.geometry.point.Point
Python ile Coğrafi Verilerle Çalışma

Shapely Python paketi

type(brussels)
shapely.geometry.point.Point

Shapely

  • Geometrik nesneleri işlemek ve analiz etmek için Python paketi
  • Point, LineString ve Polygon nesnelerini sağlar
  • GeoSeries (GeoDataFrame 'geometry' sütunu) shapely nesnelerinden oluşur
Python ile Coğrafi Verilerle Çalışma

Geometri nesneleri

Bir GeoDataFrame'den erişim:

brussels = cities.loc[170, 'geometry']
paris = cities.loc[235, 'geometry']
belgium = countries.loc[countries['name'] == 'Belgium', 'geometry'].squeeze()
france = countries.loc[countries['name'] == 'France', 'geometry'].squeeze()
uk = countries.loc[countries['name'] == 'United Kingdom', 'geometry'].squeeze()

Elle oluşturma:

from shapely.geometry import Point
p = Point(1, 2)
print(p)
POINT (1 2)
Python ile Coğrafi Verilerle Çalışma

Mekânsal yöntemler

Bir geometrinin alanı:

belgium.area
3.8299974609075753

2 geometrinin mesafesi:

brussels.distance(paris)
2.8049127723186214

Ve daha fazlası! (ör. centroid, simplify, ...)

Python ile Coğrafi Verilerle Çalışma

Mekânsal ilişkiler

geopandas.GeoSeries([belgium, france, uk, paris,  brussels, line]).plot()

Python ile Coğrafi Verilerle Çalışma

Mekânsal ilişkiler

belgium.contains(brussels)
True
france.contains(brussels)
False
brussels.within(belgium)
True
belgium.touches(france)
True
line.intersects(france)
True
line.intersects(uk)
False
Python ile Coğrafi Verilerle Çalışma

Hadi pratik yapalım!

Python ile Coğrafi Verilerle Çalışma

Preparing Video For Download...