Построение Shapely Linestring и shape Geo Point Coordinate на одном и том же участке - PullRequest
0 голосов
/ 04 марта 2020

У меня есть два GeoDataFrames. Одна, которая является картой улиц города, а другая - координаты данных NHTSA Cra sh.

У меня возникли проблемы при поиске метода преобразования из типа LineString, который представляет собой StreetMap к точечному типу, который является геокоординатой.

В конечном итоге шкала Матплота просто далека, что совершенно неверно отображает вещи. Вот несколько примеров фреймов данных.

                         geometry  
72     POINT (-88.73746 40.72734)  
4093   POINT (-88.95345 40.53861)  
7638   POINT (-88.99324 40.47142)    

И другой фрейм данных

0        LINESTRING (903617.335 1487219.494, 903780.564...
1        LINESTRING (913845.303 1489995.746, 914731.553...
2        LINESTRING (909998.735 1489953.767, 911530.535...

Я посмотрел красивую документацию, но, будучи новичком в гео-работе, я мог бы использовать повышение .

ОБНОВЛЕНИЕ КОДА УЧАСТКА . Я думал, что я также обновлю свой код, возможно, мне нужно что-то сделать со шкалой?

fig, ax = plt.subplots(figsize=(15,15))
street_map.plot(ax=ax, alpha=0.4, color='grey')
geo_df[geo_df['work_zone']=='None'].plot(ax=ax,
                                         markersize=20,
                                         color = 'orange',
                                         marker='o',
                                         label='None')
geo_df[geo_df['work_zone']=='Maintenance'].plot(ax=ax,
                                                markersize=20,
                                                color = 'red',
                                                marker='^',
                                                label='Maintenance')
plt.legend(prop={'size': 15});

1 Ответ

1 голос
/ 04 марта 2020

У вас смешанный CRS, поэтому один из ваших фреймов данных необходимо перепроецировать для соответствия другому. Поскольку вы используете LineString gdf, я бы использовал этот CRS.

geo_df = geo_df.to_crs(street_map.crs) # thin line does the trick

fig, ax = plt.subplots(figsize=(15,15))
street_map.plot(ax=ax, alpha=0.4, color='grey')
geo_df[geo_df['work_zone']=='None'].plot(ax=ax,
                                         markersize=20,
                                         color = 'orange',
                                         marker='o',
                                         label='None')
geo_df[geo_df['work_zone']=='Maintenance'].plot(ax=ax,
                                                markersize=20,
                                                color = 'red',
                                                marker='^',
                                                label='Maintenance')
plt.legend(prop={'size': 15});
...