Как я могу загрузить несколько файлов gpx в PostGIS? - PullRequest
7 голосов
/ 30 августа 2011

У меня есть куча файлов gpx из GPSLogger для Android app.

Файлы выглядят так:

<?xml version="1.0" encoding="UTF-8"?>
<gpx  version="1.0" creator="GPSLogger - http://gpslogger.mendhak.com/"  
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  xmlns="http://www.topografix.com/GPX/1/0" 
  xsi:schemaLocation="http://www.topografix.com/GPX/1/0 
    http://www.topografix.com/GPX/1/0/gpx.xsd" >
  <time>2011-08-26T06:25:20Z</time>
  <bounds></bounds>
  <trk>
    <trkseg>
      <trkpt  lat="46.94681501102746"  lon="7.398453755309032" >
        <ele>634.0</ele>
        <speed>0.0</speed>
        <src>gps</src>
        <sat>6</sat>
        <time>2011-08-26T06:25:20Z</time>
      </trkpt>
      <trkpt  lat="46.94758878281887"  lon="7.398622951942811" >
        <ele>748.0</ele>
        <speed>0.0</speed>
        <src>gps</src>
        <sat>5</sat>
        <time>2011-08-26T06:30:56Z</time>
      </trkpt>

...   ...   ...

    </trkseg>
  </trk>
</gpx>

Возможно ли пройти каталогсодержащий эти файлы и загружать их в одну таблицу PostGIS, используя SQL или Python?

Я наткнулся на это сообщение в блоге, упомянув, что:

I 'я не знаю ничего, что может конвертировать прямо из GPX в PostGIS

В этом посте приведен пример работы с SQL для этого, но я не могу разобраться скод: /

Ответы [ 2 ]

8 голосов
/ 17 апреля 2012

ogr2ogr (часть GDAL) - это простой и понятный инструмент оболочки Unix для загрузки файла GPX в PostGIS.

ogr2ogr -append -f PostgreSQL PG:dbname=walks walk.gpx

ogr2ogr создает собственные таблицы базы данных в PostGIS со своей собственной схемой. Таблица tracks имеет одну строку для каждой дорожки GPS; tracks.wkb_geometry содержит сам трек GPS как MultiLineString. Таблица track_points содержит отдельные исправления местоположения (с отметками времени).

Вот как выглядит база данных walks до импорта:

walks=# \d
               List of relations
 Schema |       Name        | Type  |  Owner   
--------+-------------------+-------+----------
 public | geography_columns | view  | postgres
 public | geometry_columns  | view  | postgres
 public | raster_columns    | view  | postgres
 public | raster_overviews  | view  | postgres
 public | spatial_ref_sys   | table | postgres
(5 rows)

... и после импорта:

walks=# \d
                    List of relations
 Schema |           Name           |   Type   |  Owner   
--------+--------------------------+----------+----------
 public | geography_columns        | view     | postgres
 public | geometry_columns         | view     | postgres
 public | raster_columns           | view     | postgres
 public | raster_overviews         | view     | postgres
 public | route_points             | table    | postgres
 public | route_points_ogc_fid_seq | sequence | postgres
 public | routes                   | table    | postgres
 public | routes_ogc_fid_seq       | sequence | postgres
 public | spatial_ref_sys          | table    | postgres
 public | track_points             | table    | postgres
 public | track_points_ogc_fid_seq | sequence | postgres
 public | tracks                   | table    | postgres
 public | tracks_ogc_fid_seq       | sequence | postgres
 public | waypoints                | table    | postgres
 public | waypoints_ogc_fid_seq    | sequence | postgres
(15 rows)
3 голосов
/ 30 августа 2011

Если вы используете Linux, вы можете попробовать это:

  1. Используйте программу для преобразования GPX в SHP: gpx2shp

    sudo apt-get install gpx2shp
    ...
    gpx2shp -o output_file.shp infile.gpx
    
  2. затем загрузите этот файл в базу данных с поддержкой postgis с помощью shp2pgsql

    sudo apt-get install postgis
    ...
    shp2pgsql output_file.shp gis_table
    

вы, конечно, можете использовать pipe и сделать все в одномкомандная строка

Для получения дополнительной информации см. справочные страницы.

РЕДАКТИРОВАТЬ Если вы все еще хотите сценарий Python, вы можете найти помощь здесь http://pypi.python.org/pypi/gpxtools

...