Osmer¶ ↑
Osmer is a tool to manage local OSM database: import data, transform it to convenient scheme and update it.
Features¶ ↑
-
Importing and updating data in osm2pgsql schema (osm2pgsql required)
-
Custom derived schemas for analysis or rendering convenience
-
BBox restriction of imported data
-
Data reprojection between schemas
-
Geometry simplification
-
(planned) Native database schema support
-
(planned) Rails-like config/database.yml support for seamless integration with webapps
-
(planned) Importing and updating data in pgsnapshot schema (osmosis required)
Configuration¶ ↑
Database schemas definition goes to Osmfile which contains basic flags and schema definitions:
prefix 'osmer' # Prefix for all tables schema :source, :type => :osm2pgsql do # Osm2pgsql schema named 'source' bbox 35.859375, 54.367759, 36.562495, 54.775345 # It has bounding box restriction as minlon, minlat, maxlon, maxlat updates :daily do # It may be updated on daily basis dump 'http://data.gis-lab.info/osm_dump/dump/RU-KLU/RU-KLU-{today}.osm.pbf' # Where initial dump should be downloaded from here diff 'http://data.gis-lab.info/osm_dump/diff/RU/RU-{yesterday}-{today}.osc.gz' # And diff should be downloaded from here end end schema :rendering, :projection => 900913 do # Rendering schema containing only necessary data multipolygons :places do # Table of place boundaries map :place => [:city, :town, :village, :hamlet] # It contains features which have place tag with one of values: city, town, village, hamlet with :area # And also polygon area end lines :roads do # Table of roads map :highway # It contains features with highway tag with :length, :ref => :string # And also road length and ref tag to additional table column end end
Usage¶ ↑
Osmer may be used as command-line executable with following commands:
-
osmer schema create [SCHEMA]
# Create given osm schema in database (create all if none specified) -
osmer schema drop [SCHEMA]
# Drop given osm schema in database (drop all if none specified) -
osmer schema recreate [SCHEMA]
# Recreate given osm schema in database (recreate all if none specified) -
osmer data import [SCHEMA] [FILE]
# Import data to given schema from file -
osmer data update [SCHEMA] [FILE]
# Update data in schema from given change file
Supported options:
-
-c, [–config=CONFIG] Config file location, default value
Osmfile
-
-h, [–dbhost=DBHOST] Database host, default value
localhost
-
-p, [–dbport=DBPORT] Database port, default value
5432
-
-U, [–dbuser=DBUSER] Database user
-
-P, [–dbpass=DBPASS] Database password
-
-d, [–dbname=DBNAME] Database name
Details¶ ↑
Schema¶ ↑
Schema is a set of tables representing osm data in a common way. Examples of schemas may be:
-
Osm2Pgsql schema
-
PgSnapshot schema populated with Osmosis
-
Custom set of tables, representing data in convenient way
All tables in schema share common projection. In database schemas are represented with table prefixes (native schemas will be supported later)
Table¶ ↑
Mapper¶ ↑
Special mappers:
-
- geometry
-
Feature geometry - present by default, configured with
simplify
-
- name
-
Feature name - present by default
-
- type
-
Feature type - present by default, configured with
map
-
- z_order
-
Order of feature in rendering - specified with
z_order
Available mappers (specified with with
):
-
- string
-
Simple string column
-
- address
-
Address columns
-
- area
-
Polygon (or multipolygon) area
-
- length
-
Line (or multiline) length
Internals¶ ↑
Schema¶ ↑
In code, schema is representd by an object, which have following methods:
-
create! - to create schema in database
-
drop! - to drop schema in database
-
attach_listener! - (optional) - to add listener to schema data, which may be used to have autoupdate functionality
listener with name <name> is a stored procedure set:
<name>_insert(id,*args) <name>_update(id,*args) <name>_delete(id)
Mapper¶ ↑
Mapper is represented by Ruby class which have methods:
-
- fields
-
hash in form of field-type to add to table
-
- assignments
-
hash in form of field-expression
-
- conditions
-
list of conditions on source data
-
- indexes
-
hash of indexes in form name-specification to be added
Advanced mapper usage¶ ↑
with do int :layer, :null => false, :default => 0 end
Contributors¶ ↑
See github.com/alno/osmer/graphs/contributors
Copyright © 2012 Alexey Noskov, released under the MIT license