Szukam odpowiednika ArcPy Generate Near Table za pomocą Geopandas/Shapely. Jestem bardzo nowy w Geopandas i Shapely i opracowałem metodologię, która działa, ale zastanawiam się, czy jest na to skuteczniejszy sposób.Oblicz odległość do najbliższej funkcji za pomocą Geopandas
Mam dwa pliki danych punktowych - Census Block Centroids i restauracje. Poszukuję, dla każdego centroida Census Block, odległości do najbliższej restauracji. Nie ma żadnych ograniczeń dotyczących tej samej restauracji, która jest najbliższą restauracją dla wielu bloków.
Powodem, dla mnie staje się to nieco bardziej skomplikowane, ponieważ Geopandas Distance function oblicza elementwise, dopasowując na podstawie indeksu. Dlatego moją ogólną metodologią jest przekształcenie pliku restauracji w plik wielopunktowy, a następnie ustawienie indeksu pliku bloków tak, aby wszystkie miały tę samą wartość. Następnie wszystkie centroidy blokowe i restauracje mają tę samą wartość indeksu.
import pandas as pd
import geopandas as gpd
from shapely.geometry import Polygon, Point, MultiPoint
teraz przeczytać w Shapefiles Blok ciężkości i restauracji:
Blocks=gpd.read_file(BlockShp)
Restaurants=gpd.read_file(RestaurantShp)
Ponieważ funkcja odległość Geopandas oblicza odległość elementwise, przekonwertować GeoSeries restauracja jest GeoSeries MultiPoint:
RestMulti=gpd.GeoSeries(Restaurants.unary_union)
RestMulti.crs=Restaurants.crs
RestMulti.reset_index(drop=True)
Następnie ustawiam indeks dla bloków równy 0 (ta sama wartość, co Restauracje wielopunktowe), jako operację dla obliczeń elementarnych.
Blocks.index=[0]*len(Blocks)
Na koniec używam funkcji odległości geograficznej, aby obliczyć odległość do najbliższej restauracji dla każdego centroidu bloku.
Blocks['Distance']=Blocks.distance(RestMulti)
Proszę zaproponować wszelkie sugestie dotyczące poprawy tego aspektu. Nie jestem związany z używaniem Geopandas lub Shapely, ale szukam sposobu na poznanie alternatywy dla ArcPy.
Dzięki za pomoc!
ustalania najbliższych sąsiadów jest dość prosta zadanie w sam numpy. zobacz koniec tej prezentacji (https://speakerdeck.com/jakevdp/losing-your-loops-fast-numerical-computing-with-numpy-pycon-2015) dla sprawdzenia czystego numpy w połączeniu z funkcją uczenia się naukowego . –
Powinieneś być w stanie powtórzyć swoje bloki, a następnie po prostu obliczyć odległość dla wszystkich restauracji do tego konkretnego bloku (przy użyciu wbudowanej funkcji geopandas). Wybierz minimum i gotowe? Aby uzyskać dodatkową pomoc, możesz opublikować, gdzie można znaleźć pliki shapefile? – shongololo