Skip to content

Commit 4d656cb

Browse files
martinfleisanitagraser
authored andcommitted
Trajectory.is_latlon() update for GeoPandas 0.7 (#50)
is_latlon compatibility with gpd 0.7
1 parent 01417e5 commit 4d656cb

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

movingpandas/trajectory.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
from shapely.affinity import translate
77
from shapely.geometry import Point, LineString
8-
from fiona.crs import from_epsg
98
from datetime import datetime
109
from pandas import Grouper
1110

@@ -87,7 +86,7 @@ def hvplot(self, *args, **kwargs):
8786
"""
8887
Generate an interactive plot using hvplot.
8988
90-
The following parameters are set by default: geo=True, tiles='OSM'.
89+
The following parameters are set by default: geo=True, tiles='OSM'.
9190
9291
Parameters
9392
----------
@@ -114,16 +113,16 @@ def is_valid(self):
114113

115114
def is_latlon(self):
116115
"""
117-
Return whether the trajectory CRS is WGS 84.
116+
Return whether the trajectory CRS is geographic.
118117
119118
Returns
120119
-------
121120
bool
122121
"""
123-
if self.crs['init'] == from_epsg(4326)['init']:
124-
return True
125-
else:
126-
return False
122+
from pyproj import CRS
123+
124+
crs = CRS.from_user_input(self.crs)
125+
return crs.is_geographic
127126

128127
def to_crs(self, crs):
129128
"""
@@ -368,7 +367,7 @@ def get_segment_between(self, t1, t2):
368367
if not segment.is_valid():
369368
raise RuntimeError("Failed to extract valid trajectory segment between {} and {}".format(t1, t2))
370369
return segment
371-
370+
372371
def _compute_distance(self, row):
373372
pt0 = row['prev_pt']
374373
pt1 = row['geometry']
@@ -380,16 +379,16 @@ def _compute_distance(self, row):
380379
dist_meters = measure_distance_spherical(pt0, pt1)
381380
else: # The following distance will be in CRS units that might not be meters!
382381
dist_meters = measure_distance_euclidean(pt0, pt1)
383-
return dist_meters
384-
382+
return dist_meters
383+
385384
def _add_prev_pt(self, force=True):
386385
"""
387386
Create a shifted geometry column with previous positions.
388387
"""
389388
if 'prev_pt' not in self.df.columns or force:
390389
# TODO: decide on default enforcement behavior
391390
self.df = self.df.assign(prev_pt=self.df.geometry.shift())
392-
391+
393392
def get_length(self):
394393
"""
395394
Return the length of the trajectory.
@@ -424,7 +423,7 @@ def get_direction(self):
424423
return calculate_initial_compass_bearing(pt0, pt1)
425424
else:
426425
return azimuth(pt0, pt1)
427-
426+
428427
def _compute_heading(self, row):
429428
pt0 = row['prev_pt']
430429
pt1 = row['geometry']
@@ -566,7 +565,7 @@ def intersection(self, feature, pointbased=False):
566565
Trajectory segment intersecting with the feature
567566
"""
568567
return intersection(self, feature, pointbased)
569-
568+
570569
def split_by_date(self, mode='day'):
571570
"""
572571
Split trajectory into subtrajectories using regular time intervals.

0 commit comments

Comments
 (0)