/motoblog

ludwik motoblog

Primary LanguagePython

algorytm utworzenia blogu

  1. Basecamp
  • wszystkie tracki importuję do Basecampa, obrabiam, komentuję, etc.
  • eksport to katalogu gpx
  1. gpx2spatia.py
  • pompujemy z plików GPX informację do bazy danych Spatialite
  1. spatia2geojson.py
  • wyciągmy ze spatalite wszystkie informacje o naszych wyjazdach i tworzymy z nich pliki GeoJSON
  1. MAKO tempates
  • tworzymy statyczną stronę WWW za pomocą templejtów

Liczby Napisy Tablice [] Słowniki {}

kontakty = { 1 : { "imie" : "konrad", "nazwisko" : "ludwikowski", "telefon" : 947662781 }, 2 : { "imie" : "agnieszka", "nazwisko" : "ludwikowska", "telefon" : 8888888 }, }

Moto blog

  1. prepare raw gpx files
  2. import do spatialite
  3. query the data with Spatial SQL (SQL with spatial extension)
  1. main queries
  • Intersects(geometry, geometry) : boolean
  • Length(geometry) : number
  • Distance(geometry, geometry) : number
  • Equals(geometry, geometry) : boolean
  • Disjoint(geometry, geometry) : boolean
  • Touches(geometry, geometry) : boolean
  • Crosses(geometry, geometry) : boolean
  • Overlaps(geometry, geometry) : boolean
  • Contains(geometry, geometry) : boolean
  • Area(geometry) : number
  • Centroid(geometry) : geometry
  1. create docker image
 docker build -t ludw/spatialite:devel .

https://www.marksmath.org/classes/Spring2016NumericalAnalysis/demos/ImportGPX.html https://docs.python.org/3/library/xml.etree.elementtree.html

gpx - root node
  trk - child node
    name - child node
    trkseg - segment track
      trkpt
        time
        lat

create SQL from GPX. Można by użyć do tego gpxpy ale my nie idziemy na łatwiznę. Sami przeorami te XMLe :)

--w jakich województwach byłem w Polsce i ile w nich zrobiłem kilometrów
SELECT
 b.gn_name AS WOJEW,
 sum(round(ST_LENGTH(ST_Intersection(a.geom, b.geometry),1)/1000)) AS ODO
FROM tracklines a, states_provinces b
WHERE b.admin='Poland' AND ST_Intersects(a.geom, b.geometry)
GROUP BY WOJEW
ORDER BY ODO DESC;

-- ile kilometrów zrobiłem w jakich krajach?
SELECT
 b.name AS COUNTRY,
 sum(round(ST_LENGTH(ST_Intersection(a.geom, b.geometry),1)/1000)) AS ODO
FROM tracklines a, countries b
WHERE ST_Intersects(a.geom, b.geometry)
GROUP BY COUNTRY
ORDER BY ODO DESC;

-- ile kilometrów zrobiłem w jakich latach?
SELECT
 strftime('%Y', timestamp_start) AS YEAR,
 SUM(round(length_m/1000,2)) AS LENGTH,
 SUM(round(ST_LENGTH(geom,1)/1000,2)) AS Calculated
FROM tracklines
GROUP BY YEAR;

#Baza wyjazdów

  1. każdy ślad: trk/trkseg/trkpt (obecne rozwiązanie gpx2spatialite nie obsługuje plików GPX bez daty - mam takie w 2018 roku z powodów błędów w Garmin Basecamp)
  2. jakiś pomysł na logiczne wiązanie wyjazdów?