Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
OSMIUM-EXPORT(1)					      OSMIUM-EXPORT(1)

NAME
       osmium-export - export OSM data

SYNOPSIS
       osmium export [OPTIONS] OSM-FILE

DESCRIPTION
       The  OSM	data model with	its nodes, ways, and relations is very differ-
       ent from	the data model usually used for	geodata	with  features	having
       point,  linestring, or polygon geometries (or their cousins, the	multi-
       point, multilinestring, or multipolygon geometries).

       The export command transforms OSM data  into  a	more  usual  GIS  data
       model.	Nodes will be translated into points and ways into linestrings
       or polygons (if they are	closed ways).  Multipolygon and	boundary rela-
       tions will be translated	into multipolygons.   This  transformation  is
       not loss-less, especially information in	non-multipolygon, non-boundary
       relations is lost.

       All  tags  are  preserved  in this process.  Note that most GIS formats
       (such as	Shapefiles, etc.)  do not support arbitrary tags.  Transforma-
       tion into other GIS formats will	need extra steps  mapping  tags	 to  a
       limited list of attributes.  This is outside the	scope of this command.

       The osmium export command has to	keep an	index of the node locations in
       memory  or in a temporary file on disk while doing its work.  There are
       several different ways it can do	that which have	 different  advantages
       and  disadvantages.  The	default	is good	enough for most	cases, but see
       the osmium-index-types(5) man page for details.

       Objects with invalid geometries are silently omitted from  the  output.
       This  is	 the  case for ways with less than two nodes or	closed ways or
       relations that can't be assembled into a	valid (multi)polygon.  See the
       options --show-errors/-e	and --stop-on-error/-E for how to modify  this
       behaviour.

       The  input  file	 will  be read twice (once for the relations, once for
       nodes and ways),	so this	command	can not	read its input from STDIN.

       This command will not work on full history files.

       This command will work with negative IDs	on OSM objects	(for  instance
       on files	created	with JOSM).

OPTIONS
       -c, --config=FILE
	      Read configuration from specified	file.

       -C, --print-default-config
	      Print  the  default  config  to  STDOUT.	 Useful	if you want to
	      change it	and not	write the whole	thing manually.	  If  you  use
	      this option all other options are	ignored.

       -e, --show-errors
	      Output any geometry errors on STDERR.  This includes ways	with a
	      single  node  or areas that can't	be assembled from multipolygon
	      relations.  This output is not suitable for automated use, there
	      are other	tools that can create  very  detailed  errors  reports
	      that     are     better	  for	  that	  (see	  https://osm-
	      code.org/osm-area-tools/).

       -E, --stop-on-error
	      Usually geometry errors (due to missing node locations or	broken
	      polygons)	are ignored and	the features are omitted from the out-
	      put.  If this option is set, any error will immediately stop the
	      program.

       --geometry-types=TYPES
	      Specify the geometry types that should be	written	out.   Usually
	      all  created  geometries	(points, linestrings, and (multi)poly-
	      gons) are	written	to the output, but you can restrict the	 types
	      using this option.  TYPES	is a comma-separated list of the types
	      ("point",	"linestring", and "polygon").

       -a, --attributes=ATTRS
	      In  addition  to	tags, also export attributes specified in this
	      comma-separated list.  By	default, none are exported.   See  the
	      ATTRIBUTES  section  below  for the known	attributes list	and an
	      explanation.

       -i, --index-type=TYPE
	      Set the index type.  For details see  the	 osmium-index-types(5)
	      man page.

       -I, --show-index-types
	      Shows  a list of available index types.  For details see the os-
	      mium-index-types(5) man page.  If	you use	this options all other
	      options are ignored.

       -n, --keep-untagged
	      If this is set, features without any tags	will  be  in  the  ex-
	      ported data.  By default these features will be omitted from the
	      output.	Tags  are  the OSM tags, not attributes	(like id, ver-
	      sion, uid, ...)  without the tags	removed	by the exclude_tags or
	      include_tags settings.

       -u, --add-unique-id=TYPE
	      Add a unique ID to each feature.	TYPE can be either counter  in
	      which case the first feature will	get ID 1, the next ID 2	and so
	      on.   The	 type  of object does not matter in this case.	Or the
	      TYPE is type_id in which case the	ID  is	a  string,  the	 first
	      character	 is  the  type	of  object  (`n'  for  nodes,  `w' for
	      linestrings created from ways, and `a' for  areas	 created  from
	      ways  and/or relations, after that there is a unique ID based on
	      the original OSM object ID(s).  For nodes	and ways  the  numeric
	      part of the ID is	identical to the original node or way ID.  For
	      areas, the ID is calculated from the original ID,	for ways it is
	      twice the	original ID, for relations it is twice the original ID
	      plus  one.   If the input	file has negative IDs, this can	create
	      IDs such as `w-12'.

       -x, --format-option=OPTION(=VALUE)
	      Set an output format option.  The	options	 available  depend  on
	      the  output  format.   See the OUTPUT FORMAT OPTIONS section for
	      available	options.  If the VALUE is not set, the OPTION will  be
	      set  to  "true".	If needed you can specify this option multiple
	      times to set several options.  Options set on the	 command  line
	      overwrite	options	set in the config file.

COMMON OPTIONS
       -h, --help
	      Show usage help.

       -v, --verbose
	      Set  verbose  mode.   The	 program will output information about
	      what it is doing to STDERR.

       --progress
	      Show progress bar.  Usually a progress bar is only displayed  if
	      STDOUT  and  STDERR  are detected	to be TTY.  With this option a
	      progress bar is always shown.  Note that	a  progress  bar  will
	      never be shown when reading from STDIN or	a pipe.

       --no-progress
	      Do  not  show progress bar.  Usually a progress bar is displayed
	      if STDOUT	and STDERR are detected	to be a	TTY.  With this	option
	      the progress bar is suppressed.  Note that a progress  bar  will
	      never be shown when reading from STDIN or	a pipe.

INPUT OPTIONS
       -F, --input-format=FORMAT
	      The  format  of the input	file(s).  Can be used to set the input
	      format if	it can't be autodetected from the file name(s).	  This
	      will  set	the format for all input files,	there is no way	to set
	      the format for some  input  files	 only.	 See  osmium-file-for-
	      mats(5) or the libosmium manual for details.

OUTPUT OPTIONS
       -f, --output-format=FORMAT
	      The  format  of  the output file.	 Can be	used to	set the	output
	      file format if it	can't be autodetected  from  the  output  file
	      name.  See the OUTPUT FORMATS section for	a list of formats.

       --fsync
	      Call  fsync  after  writing  the	output	file to	force flushing
	      buffers to disk.

       -o, --output=FILE
	      Name of the output file.	Default	is `-' (STDOUT).

       -O, --overwrite
	      Allow an existing	output file to be overwritten.	 Normally  os-
	      mium will	refuse to write	over an	existing file.

CONFIG FILE
       The  config  file  is in	JSON format.  The top-level is an object which
       contains	the following optional names:

        attributes: An	object specifying which	attributes of OSM  objects  to
	 export.  See the ATTRIBUTES section.

        format_options:  An object specifying output format options.  The op-
	 tions available depend	on the output format.  See the	OUTPUT	FORMAT
	 OPTIONS section for available options.	 These options can also	be set
	 using the command line	option --format-option/-x.

        linear_tags:  An expression specifying	tags that should be treated as
	 linear	tags.  See below for details and also look at  the  AREA  HAN-
	 DLING section.

        area_tags:  An	 expression  specifying	tags that should be treated as
	 area tags.  See below for details and also look at the	AREA  HANDLING
	 section.

        exclude_tags: A list of tag expressions.  Tags	matching these expres-
	 sions	are  excluded from the output.	See the	FILTER EXPRESSION sec-
	 tion.

        include_tags: A list of tag expressions.  Tags	matching these expres-
	 sions are included in the output.  See	the FILTER EXPRESSION section.

       The area_tags and linear_tags can have the following values:

       true   All tags match.  (An empty list [] can also be used to mean  the
	      same, but	this use is deprecated because it can be confusing.)

       false  No tags match.

       Array  The  array  contains one or more expressions as described	in the
	      FILTER EXPRESSION	section.

       null   If the area_tags or linear_tags is set to	null  or  not  set  at
	      all, the inverse of the other setting is used.  So if you	do not
	      set  the linear_tags but have some expressions in	area_tags, ar-
	      eas will be created for all objects matching  those  expressions
	      and  linestrings	for everything else.  This can be simpler, be-
	      cause you	only have to keep one list, but	in cases where an  ob-
	      ject  can	 be interpreted	as both	an area	and a linestring, only
	      one interpretation will be used.

       The exclude_tags	and include_tags options are mutually  exclusive.   If
       you  want  to just exclude some tags but	leave most tags	untouched, use
       the exclude_tags	setting.  If you only want a defined list of tags, use
       include_tags.

       When no config file is specified, the following settings	are used:

	      {
		  "attributes":	{
		      "type":	   false,
		      "id":	   false,
		      "version":   false,
		      "changeset": false,
		      "timestamp": false,
		      "uid":	   false,
		      "user":	   false,
		      "way_nodes": false
		  },
		  "format_options": {
		  },
		  "linear_tags":  true,
		  "area_tags":	  true,
		  "exclude_tags": [],
		  "include_tags": []
	      }

FILTER EXPRESSIONS
       A filter	expression specifies a tag or tags that	should be  matched  in
       the data.

       Some examples:

       amenity
	      Matches all objects with the key "amenity".

       highway=primary
	      Matches all objects with the key "highway" and value "primary".

       highway!=primary
	      Matches  all  objects  with  the key "highway" and a value other
	      than "primary".

       type=multipolygon,boundary
	      Matches all objects with key "type" and value "multipolygon"  or
	      "boundary".

       name,name:de=Kastanienallee,Kastanienstrasse
	      Matches any object with a	"name" or "name:de" tag	with the value
	      "Kastanienallee" or "Kastanienstrasse".

       addr:* Matches all objects with any key starting	with "addr:"

       name=*Paris
	      Matches all objects with a name that contains the	word "Paris".

       If there	is no equal sign ("=") in the expression only keys are matched
       and values can be anything.  If there is	an equal sign ("=") in the ex-
       pression, the key is to the left	and the	value to the right.  An	excla-
       mation sign ("!") before	the equal sign means: A	tag with that key, but
       not the value(s)	to the right of	the equal sign.	 A leading or trailing
       asterisk	 ("*")	can  be	used for substring or prefix matching, respec-
       tively.	Commas (",") can be used to separate several keys or values.

       All filter expressions are case-sensitive.  There is no way  to	escape
       the  special  characters	 such  as  "=",	 "*" and ",".  You can not mix
       comma-expressions and "*"-expressions.

ATTRIBUTES
       All OSM objects (nodes, ways, and relations) have attributes, areas in-
       herit their attributes from the ways and/or relations they were created
       from.  The attributes known to osmium export are:

        type (`node', `way', or `relation')

        id (64	bit object ID)

        version (version number)

        changeset (changeset ID)

        timestamp (time of object creation in seconds since Jan 1 1970)

        uid (user ID)

        user (user name)

        way_nodes (ways only, array with node IDs)

       For areas, the type will	be way or relation if  the  area  was  created
       from a closed way or a multipolygon or boundary relation, respectively.
       The  id	for  areas  is the id of the closed way	or the multipolygon or
       boundary	relation.

       By default the attributes will not be in	the export, because  they  are
       not necessary for most uses of OSM data.	 If you	are interested in some
       (or  all) attributes, add an attributes object to the config file.  Add
       a member	for each attribute you are interested in, the value can	be ei-
       ther false (do not output this attribute), true (output this  attribute
       with the	attribute name prefixed	by the @ sign) or any string, in which
       case the	string will be used as the attribute name.

       Another	option	is  to	specify	 attributes  list in a comma-separated
       string for the --attributes/-a command-line option.  This way you  can-
       not  control  column  names, but	also you won't have to create a	config
       file.

       Depending on your choice	of values for the attributes objects,  attrib-
       utes can	have the same name as tag keys.	 If this is the	case, the con-
       flicting	 tag  is silently dropped.  So if there	is a tag "@id=foo" and
       you have	set id to true in the attributes object, the tag will not show
       up in the output.

       Note that the id	is not necessarily unique.  Even the combination  type
       and  id	is  not	unique,	because	a way may end up in the	output file as
       LineString and as (Multi)Polygon.  See  the  --add-unique-id/-u	option
       for a unique ID.

AREA HANDLING
       Multipolygon  relations	will be	assembled into multipolygon geometries
       forming areas.  Some closed ways	will also form areas.	Here  are  the
       detailed	rules:

       Non-closed way
	      A	 non-closed  way  (with	the last node location not the same as
	      the first	node location) is always (regardless of	 any  tags)  a
	      linestring, not an area.

       Relation
	      A	 relation  tagged type=multipolygon or type=boundary is	always
	      (regardless of any tags) assembled into an area.

       Closed way
	      For a closed way (with the last node location the	 same  as  the
	      first  node  location)  the  tags	are checked: If	the way	has an
	      area=yes tag, an area is created.	 If the	 way  has  an  area=no
	      tag,  a  linestring  is created.	An area	tag with a value other
	      than yes or no is	ignored.  The configuration settings area_tags
	      and linear_tags can be used to augment the area check.   If  any
	      of  the  tags matches the	area_tags, an area is created.	If any
	      of the tags matches the linear_tags, a  linestring  is  created.
	      If both match, an	area and a linestring is created.  This	is im-
	      portant  because	some objects have tags that make them both, an
	      area and a linestring.

OUTPUT FORMATS
       The following output formats are	supported:

        geojson (alias: json):	GeoJSON	(RFC7946).  The	output file will  con-
	 tain a	single FeatureCollection object.  This is the default format.

        geojsonseq  (alias:  jsonseq):	GeoJSON	Text Sequence (RFC8142).  Each
	 line (beginning with a	RS (0x1e, record separator) and	 ending	 in  a
	 linefeed  character) contains one GeoJSON object.  Used for streaming
	 GeoJSON.

        pg: PostgreSQL	COPY text format.  One line per	object containing  the
	 WGS84	geometry as WKB, the tags in JSON format and, optionally, more
	 columns for id	and attributes.	 You have to create  the  table	 manu-
	 ally,	then  use the PostgreSQL COPY command to import	the data.  En-
	 able verbose output to	see the	SQL commands needed to create the  ta-
	 ble and load the data.

        text (alias: txt): A simple text format with the geometry in WKT for-
	 mat  followed	by  the	comma-delimited	tags.  This is mainly intended
	 for debugging at the moment.  THE FORMAT MIGHT	CHANGE WITHOUT NOTICE!

OUTPUT FORMAT OPTIONS
        print_record_separator	(default: true).  Set to false	to  not	 print
	 the RS	(0x1e, record separator) character when	using the GeoJSON Text
	 Sequence Format.  Ignored for other formats.

        tags_type  (default:  jsonb).	Set to hstore to use HSTORE format in-
	 stead of JSON/JSONB when using	the Pg Format.	Ignored	in other  for-
	 mats.

DIAGNOSTICS
       osmium export exits with	exit code

       0      if everything went alright,

       1      if there was an error processing the data, or

       2      if there was a problem with the command line arguments.

MEMORY USAGE
       osmium  export  will  usually  keep  all	node locations and all objects
       needed for assembling the areas in memory.  For larger data files, this
       can need	 several  tens	of  GBytes  of	memory.	  See  the  osmium-in-
       dex-types(5) man	page for details.

EXAMPLES
       Export into GeoJSON format:

	      osmium export data.osm.pbf -o data.geojson

       Use a config file and export into GeoJSON Text Sequence format:

	      osmium export data.osm.pbf -o data.geojsonseq -c export-config.json

SEE ALSO
        osmium(1),    osmium-file-formats(5),	  osmium-index-types(5),   os-
	 mium-add-node-locations-to-ways(1)

        Osmium	website	<https://osmcode.org/osmium-tool/>

        GeoJSON <http://geojson.org/>

        RFC7946 <https://tools.ietf.org/html/rfc7946>

        RFC8142 <https://tools.ietf.org/html/rfc8142>

        Line	delimited   JSON   <https://en.wikipedia.org/wiki/JSON_Stream-
	 ing#Line_delimited_JSON>

COPYRIGHT
       Copyright (C) 2013-2026 Jochen Topf <jochen@topf.org>.

       License	GPLv3+:	 GNU  GPL  version  3  or  later  <https://gnu.org/li-
       censes/gpl.html>.  This is free software: you are free  to  change  and
       redistribute it.	 There is NO WARRANTY, to the extent permitted by law.

CONTACT
       If  you	have  any  questions  or  want	to  report a bug, please go to
       https://osmcode.org/contact.html

AUTHORS
       Jochen Topf <jochen@topf.org>.

				    1.19.0		      OSMIUM-EXPORT(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=osmium-export&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help