Files
secondo/Algebras/OSM/Scripts/TuImportGpsTracesFromCsvFiles.sec

93 lines
1.9 KiB
Plaintext
Raw Normal View History

2026-01-23 17:03:45 +08:00
################################################################################
### Importing GPS-traces from CSV-files
################################################################################
### Description:
### - This script imports GPS-traces from CSV-files.
###
### Preconditions:
### - existing database
###
### Postconditions:
###
### Authors:
### - Prof. Dr. Ralf Hartmut Güting, rhg@fernuni-hagen.de
### - Thomas Uchdorf, thomas.uchdorf(at)fernuni-hagen.de
################################################################################
open database dortmundC;
# load raw data
delete Trk101215;
let KDRSchema =
[const rel(tuple([
Latitude: real,
Longitude: real,
UTC: string,
Altitude: int,
Distance: real,
Speed: int,
Date: string,
Name: string,
Sat: int
]))
value ()];
let Trk101215 =
KDRSchema
csvimport['/Users/fernuni-student/secondo-data/gps-traces/Trk101215Modified.csv',
7,
"#",
","]
consume;
#2.95 secs
#Result size 74346
# create Trip and Altitude for each day
let Onehour =
[const duration value (0 3600000)];
delete DayTrips;
let DayTrips =
Trk101215 feed
extend[
I: str2instant(.Date + "-" + .UTC) + onehour,
P: makepoint(.Longitude, .Latitude),
Alt: int2real(.Altitude) ]
sortby[Date asc, I asc]
groupby[Date
; DayTrip: group feed approximate[I, P, [const duration value (0 300000)]],
DayAlt: group feed approximate[I, Alt, [const duration value (0 300000)]] ]
consume;
#3.79 secs
#result size 134
# compute trajectories
query DayTrips feed
extend[Traj: trajectory(.DayTrip)]
consume;
# alternative representation: split by trips
let Trips =
DayTrips feed
projectextendstream[Date;
Trip: .DayTrip sim_trips[ [const duration value (0 300000)]] ]
extend[Traj: trajectory(.Trip)]
consume;
#3.71 secs
#result size 398