Hava vahşi yaşam anketlerimizde genellikle düzinelerce GPX dosyası üretiyoruz ve genellikle bir CBS uygulamasında görüntülemek için bunların çoğunu şekil dosyalarına dönüştürüyoruz. GPX dosyaları, GPS verilerinizin tümünü (veya neredeyse tümünü) tek bir yerde tutmanın müthiş bir yoludur - tracklog, yol noktası ve rota bilgilerini tek bir formatta depolayan xml dosyalarıdır. Birden fazla parçayı, hatta bir Garmin'in eski kayıtlı parçalarını bile saklıyorlar.
Tüm bu parça verilerini, aynı anketten nokta gözlem verilerine sahip diğer tablolarla paralel olarak, bir spatialite veritabanında saklamak istiyorum.
ogr2ogr, parçayı bir uzamsal veritabanına dönüştürmeme izin verecek:
ogr2ogr -append -f "SQLite" -dsco SPATIALITE=yes # add to table with Spatialite filetype
-dsco INIT_WITH_EPSG=yes -t_srs epsg:4326 # using WGS84
SURVEYDATA.sqlite GPXFILE.gpx tracks -nln tracktable; # adding tracks to 'tracktable'
Ancak, bu kaydedilen her parçayı bir satır olarak içe aktarır - her bir iz noktası için zaman / konum bilgilerini kaybeder!
Herkes bu bilgileri koruyacak bir tracklog veritabanı oluşturmak için akıllıca yollar biliyor musunuz?
DÜZENLE :
Güzergah günlükleri sadece bir çizgi değildir - her biri yükseklik ve zaman özelliğine sahip sıralı noktaların koleksiyonlarıdır. Her nokta, belirli bir parçaya ait olan bir parça segmentine aittir ve her parça segmentindeki noktalar kesintisiz olarak alınmıştır ve bağlantılı olduğu varsayılabilir. Örneğin:
<trk><name>ACTIVE LOG</name>
<trkseg>
<trkpt lat="-13.471403" lon="31.382982"><ele>467.818725585938</ele><time>2009-09-09T03:53:38Z</time></trkpt>
<trkpt lat="-13.471403" lon="31.382982"><ele>468.780029296875</ele><time>2009-09-09T03:53:50Z</time></trkpt>
<trkpt lat="-13.471403" lon="31.382982"><ele>465.896118164063</ele><time>2009-09-09T03:54:43Z</time></trkpt>
</trkseg>
Bu nedenle, bir tracklog'u kaydetmek için bu puan topluluğunu ilişkili verilerle kaydetmeniz gerekir.
Çözümlerden biri, bu parçaları parça adı olarak yüklemek olabilir; parça adı, segment, yükseklik ve zaman için ek sütunlar; Yine de ogr'un parçaları puan olarak dönüştüreceğini sanmıyorum.
Çözüm
Yüklediğim (OS X 10.9) gpx2spatialite'i işaret eden @scruss sayesinde sudo easy_install gpx2spatialite
. Bu araç seti 'çizim hayatı' projesi için tasarlanmıştır (ve bu nedenle çoğumuz için muhtemelen gereksiz olan bazı 'şehir' bilgilerine sahiptir); ana gpx2spatialite sayfası çok fazla açıklamıyor, ancak çizim hayatı wiki daha iyi. Yine de, belgelenmemiş birçok özellik - kopyaları kaldırmak gibi!
Parkur parçalarını, parkurları, parkur noktalarını ve ara noktaları tutan GPX dosyaları için bir uzamsal veritabanı oluşturun. Ayrıca, çeşitli parçaları etiketlemek için tasarlanmış (kullanıcılar garip görünüyor, çünkü sqlite bir kullanıcı erişim sistemi değil, çizim hayatı için tasarlandı) kuruldu:
gpx2spatialite create_db MyGPXArchive.db
Tüm alt klasörler de dahil olmak üzere GPX dosyalarının bir klasörünü yükleyin, yinelenenleri yol boyunca kontrol edin ve kaldırın:
gpx2spatialite -s -d MyGPXArchive.db -u SL25 Selous2013/
Seçenekler:
-s
= izleme noktalarının şehir veri tabanında olup olmadığını kontrol etme (LOT'u hızlandırır)-d MyGPXArchive.db
= kullanılacak veritabanı;-u SL25
= SL25 kullanıcısını ekleyin (sadece toplanan parçalar için kullandığım bir etiket);Selous2013
= ilgilendiğim parçaları içeren klasör (alt klasörlerle birlikte).
Hatalar:
Zaman damgası bilgisini atayan daha eski bir Garmin'e parkur kaydettiyseniz, içe aktarma işlemini kilitler (GPSU gibi bir yardımcı program kullanarak kaydedilmiş parkurları kaldırın). Eğer gpsbabel'ınız varsa , önce dosyayı aşağıdaki gibi bir şeyle filtreleyin:
gpsbabel -w -r -t -i gpx -f [INPUT.gpx] -x izleme, başlat = 20000101 -o gpx -F [OUTPUT.gpx]