[osmcoastline] 01/04: Imported Upstream version 2.0.1
Sebastiaan Couwenberg
sebastic at moszumanska.debian.org
Tue Mar 31 21:14:21 UTC 2015
This is an automated email from the git hooks/post-receive script.
sebastic pushed a commit to branch master
in repository osmcoastline.
commit 7fc8d8577c5fbbb1ba047dd5f090b6e71184a04e
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date: Tue Mar 31 23:07:20 2015 +0200
Imported Upstream version 2.0.1
---
.ycm_extra_conf.py | 6 +-
CHANGELOG.md | 18 ++++
CMakeLists.txt | 77 +++++++++++++--
README.md | 14 ++-
fix-formatting.sh | 7 ++
man/manpage.template | 28 ++++++
man/osmcoastline.md | 110 +++++++++++++++++++++
man/osmcoastline_filter.md | 55 +++++++++++
man/osmcoastline_readmeta.md | 28 ++++++
man/osmcoastline_ways.md | 34 +++++++
osmcoastline_readmeta | 87 ++++++++++++++++
osmcoastline_readmeta.sh | 85 ----------------
runtest.sh.in | 2 +-
src/CMakeLists.txt | 20 ++++
.../coastline_handlers.hpp | 9 +-
.../coastline_polygons.cpp | 2 +-
.../coastline_polygons.hpp | 4 +-
coastline_ring.cpp => src/coastline_ring.cpp | 0
coastline_ring.hpp => src/coastline_ring.hpp | 41 +++++---
.../coastline_ring_collection.cpp | 0
.../coastline_ring_collection.hpp | 26 +++--
ogr_include.hpp => src/ogr_include.hpp | 0
options.cpp => src/options.cpp | 39 ++++----
options.hpp => src/options.hpp | 0
osmcoastline.cpp => src/osmcoastline.cpp | 2 +-
osmcoastline.hpp => src/osmcoastline.hpp | 0
.../osmcoastline_filter.cpp | 0
osmcoastline_ways.cpp => src/osmcoastline_ways.cpp | 20 ++--
output_database.cpp => src/output_database.cpp | 3 +-
output_database.hpp => src/output_database.hpp | 0
output_layers.cpp => src/output_layers.cpp | 15 +--
output_layers.hpp => src/output_layers.hpp | 0
srs.cpp => src/srs.cpp | 0
srs.hpp => src/srs.hpp | 20 +++-
stats.hpp => src/stats.hpp | 0
verbose_output.hpp => src/verbose_output.hpp | 3 +
taginfo.json | 2 +-
37 files changed, 589 insertions(+), 168 deletions(-)
diff --git a/.ycm_extra_conf.py b/.ycm_extra_conf.py
index f2f1e01..53b3175 100644
--- a/.ycm_extra_conf.py
+++ b/.ycm_extra_conf.py
@@ -6,6 +6,10 @@
#
#-----------------------------------------------------------------------------
+from os.path import realpath, dirname
+
+basedir = dirname(realpath(__file__))
+
# some default flags
# for more information install clang-3.2-doc package and
# check UsersManual.html
@@ -26,7 +30,7 @@ flags = [
'c++',
# libosmium include dirs
-'-I../libosmium/include',
+'-I%s/../libosmium/include' % basedir,
'-I/usr/include/gdal',
]
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..900c06b
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,18 @@
+
+# Change Log
+
+All notable changes to this project will be documented in this file.
+This project adheres to [Semantic Versioning](http://semver.org/).
+
+## [unreleased] -
+
+## [2.0.1] - 2015-03-31
+
+### Changed
+
+- Added man pages
+
+
+[unreleased]: https://github.com/osmcode/osmium-tool/compare/v2.0.1...HEAD
+[2.0.1]: https://github.com/osmcode/osmium-tool/compare/v2.0.0...v2.0.1
+
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1bdea83..7d8b573 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,11 +20,13 @@ project(osmcoastline)
set(OSMCOASTLINE_VERSION_MAJOR 2)
set(OSMCOASTLINE_VERSION_MINOR 0)
-set(OSMCOASTLINE_VERSION_PATCH 0)
+set(OSMCOASTLINE_VERSION_PATCH 1)
set(OSMCOASTLINE_VERSION
${OSMCOASTLINE_VERSION_MAJOR}.${OSMCOASTLINE_VERSION_MINOR}.${OSMCOASTLINE_VERSION_PATCH})
+set(AUTHOR "Jochen Topf <jochen at topf.org>")
+
#-----------------------------------------------------------------------------
#
@@ -156,19 +158,69 @@ endif(CPPCHECK)
#-----------------------------------------------------------------------------
+#
+# Optional "man" target to generate man pages
+#
+#-----------------------------------------------------------------------------
+message(STATUS "Looking for pandoc")
+find_program(PANDOC pandoc)
+
+function(add_man_page _section _name)
+ file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/man/man${_section})
+ set(_output_file ${CMAKE_BINARY_DIR}/man/man${_section}/${_name}.${_section})
+ set(_source_file ${CMAKE_SOURCE_DIR}/man/${_name}.md)
+ set(_install_dir "share/man/man{$_section}")
+ string(TOUPPER ${_name} _name_upcase)
+ add_custom_command(OUTPUT ${_output_file}
+ COMMAND ${PANDOC}
+ ${PANDOC_MAN_OPTIONS}
+ --variable "title=${_name_upcase}"
+ --variable "section=${_section}"
+ -o ${_output_file}
+ ${_source_file}
+ DEPENDS ${_source_file}
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ COMMENT "Building manpage ${_name}.${_section}"
+ VERBATIM)
+ set(ALL_MAN_PAGES "${ALL_MAN_PAGES};${_output_file}" PARENT_SCOPE)
+endfunction()
+
+
+if(PANDOC)
+ message(STATUS "Looking for pandoc - found")
+ message(STATUS " Manual pages will be built")
+ execute_process(COMMAND date "+%Y-%m-%d" OUTPUT_VARIABLE PUBDATE OUTPUT_STRIP_TRAILING_WHITESPACE)
+ set(PANDOC_MAN_OPTIONS
+ -s
+ -t man
+ --template ${CMAKE_CURRENT_SOURCE_DIR}/man/manpage.template
+ --variable "description=osmcoastline/${OSMCOASTLINE_VERSION}"
+ --variable "date=${PUBDATE}"
+ --variable "author=${AUTHOR}"
+ )
+ set(PANDOC_HTML_OPTIONS -s -t html)
-find_library(GEOS_C_LIBRARIES NAMES geos_c)
+ add_man_page(1 osmcoastline)
+ add_man_page(1 osmcoastline_filter)
+ add_man_page(1 osmcoastline_readmeta)
+ add_man_page(1 osmcoastline_ways)
-add_definitions(${OSMIUM_WARNING_OPTIONS})
+ install(DIRECTORY ${CMAKE_BINARY_DIR}/man DESTINATION share)
-add_executable(osmcoastline osmcoastline.cpp coastline_ring.cpp coastline_ring_collection.cpp coastline_polygons.cpp output_database.cpp output_layers.cpp srs.cpp options.cpp)
-target_link_libraries(osmcoastline ${OSMIUM_IO_LIBRARIES} ${GDAL_LIBRARIES} ${GEOS_C_LIBRARIES})
+ add_custom_target(man ALL DEPENDS ${ALL_MAN_PAGES})
+else()
+ message(STATUS "Looking for pandoc - not found")
+ message(STATUS " Manual pages will not be built")
+endif(PANDOC)
-add_executable(osmcoastline_filter osmcoastline_filter.cpp)
-target_link_libraries(osmcoastline_filter ${OSMIUM_IO_LIBRARIES})
-add_executable(osmcoastline_ways osmcoastline_ways.cpp osmcoastline.hpp)
-target_link_libraries(osmcoastline_ways ${OSMIUM_IO_LIBRARIES} ${GDAL_LIBRARIES})
+#-----------------------------------------------------------------------------
+
+find_library(GEOS_C_LIBRARIES NAMES geos_c)
+
+add_definitions(${OSMIUM_WARNING_OPTIONS})
+
+add_subdirectory(src)
configure_file(
${PROJECT_SOURCE_DIR}/runtest.sh.in
@@ -185,6 +237,13 @@ configure_file(
${PROJECT_BINARY_DIR}/coastline_sources.qgs
)
+configure_file(
+ ${PROJECT_SOURCE_DIR}/osmcoastline_readmeta
+ ${PROJECT_BINARY_DIR}/osmcoastline_readmeta
+ COPYONLY
+)
+install(PROGRAMS osmcoastline_readmeta DESTINATION bin)
+
#-----------------------------------------------------------------------------
#
diff --git a/README.md b/README.md
index 3584893..78bf4b7 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,8 @@
# OSMCoastline
-OSMCoastline extracts the coastline from an OSM planet file and assembles all
-the pieces into polygons for use in map renderers etc.
+OSMCoastline extracts the coastline data from an OSM planet file and assembles
+all the pieces into polygons for use in map renderers etc.
http://wiki.openstreetmap.org/wiki/OSMCoastline
@@ -40,10 +40,16 @@ https://github.com/osmcode/osmcoastline
http://www.gaia-gis.it/gaia-sins/
Debian/Ubuntu: sqlite3
+### Pandoc (optional, to build documentation)
+
+ http://johnmacfarlane.net/pandoc/
+ Debian/Ubuntu: pandoc
+ (If pandoc is found by CMake, the manpages will automatically be built.)
+
## Building
-You'll need all the prerequisites including `libosmium` installed.
+You'll need the prerequisites including `libosmium` installed.
OSMCoastline uses CMake for building:
@@ -138,7 +144,7 @@ directory for some more ways of doing this.
The database tables `options` and `meta` contain the command line options
used to create the database and some metadata. You can use the script
-`osmcoastline_readmeta.sh` to look at them.
+`osmcoastline_readmeta` to look at them.
## Steps
diff --git a/fix-formatting.sh b/fix-formatting.sh
new file mode 100755
index 0000000..41ae193
--- /dev/null
+++ b/fix-formatting.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+#
+# fix-formatting
+#
+
+exec astyle --style=java --indent-namespaces --indent-switches --pad-header --lineend=linux --suffix=none src/*pp
+
diff --git a/man/manpage.template b/man/manpage.template
new file mode 100644
index 0000000..e03becc
--- /dev/null
+++ b/man/manpage.template
@@ -0,0 +1,28 @@
+$if(has-tables)$
+.\"t
+$endif$
+.TH "$title$" "$section$" "$date$" "$footer$" "$header$"
+$for(header-includes)$
+$header-includes$
+$endfor$
+$for(include-before)$
+$include-before$
+$endfor$
+$body$
+$for(include-after)$
+$include-after$
+$endfor$
+$if(author)$
+.SH COPYRIGHT
+.PP
+Copyright (C) 2012\-2015 Jochen Topf <jochen at topf.org>.
+License GPLv3+: GNU GPL version 3 or later
+<http://gnu.org/licenses/gpl.html>.
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+.SH CONTACT
+.PP
+http://osmcode.org/contact.html
+.SH AUTHORS
+$for(author)$$author$$sep$; $endfor$.
+$endif$
diff --git a/man/osmcoastline.md b/man/osmcoastline.md
new file mode 100644
index 0000000..275e3a7
--- /dev/null
+++ b/man/osmcoastline.md
@@ -0,0 +1,110 @@
+
+# NAME
+
+osmcoastline - extract coastline from OSM data
+
+
+# SYNOPSIS
+
+**osmcoastline** \[*OPTIONS*\] --output=*OUTPUT-DB* *INPUT-FILE*
+
+
+# DESCRIPTION
+
+**osmcoastline** extracts the coastline data from the *INPUT-FILE*, ususally
+a planet file (or the output of the **osmcoastline_filter** program, see below)
+and assembles all the pieces into polygons for use in map renderers etc.
+
+The output is written to the Spatialite database *OUTPUT-DB*. Depending on the
+options it will contains the coastlines in different formats. See the
+description of the options below and the README.md for details.
+
+
+# OPTIONS
+
+-h, --help
+: Display usage information.
+
+-b, --bbox-overlap=OVERLAP
+: Polygons that are too large are split into two halves (recursively if need
+ be). Where the polygons touch the OVERLAP is added, because two polygons
+ just touching often lead to rendering problems. The value is given in the
+ units used for the projection (for WGS84 (4326) this is in degrees, for
+ Mercator (3857) this is in meters). If this is set too small you might get
+ rendering artefacts where polygons touch. The larger you set this the
+ larger the output polygons will be. The best values depend on the map scale
+ or zoom level you are preparing the data for. Disable the overlap by
+ setting it to 0. Default is 0.0001 for WGS84 and 10 for Mercator.
+
+-c, --close-distance=DISTANCE
+: **osmcoastline** assembles ways tagged `natural=coastline` into rings.
+ Sometimes there is a gap in the coastline in the OSM data. OSMCoastline
+ will close this gap if it is smaller than DISTANCE. Use 0 to disable this
+ feature.
+
+-d, --debug
+: Enable debugging output.
+
+-f, --overwrite
+: Overwrite output file if it already exists.
+
+-i, --no-index
+: Do not create spatial indexes in output db. The default is to create those
+ indexes which makes the database larger, but the data is faster to use.
+
+-l, --output-lines
+: Output coastlines as lines to database file.
+
+-m, --max-points=NUM
+: Set this to 0 to prevent splitting of large polygons and linestrings. If
+ set to any other positive integer **osmcoastline** will try to split
+ polygons/linestrings to not have more than this many points. Depending on
+ the overlap defined with **-b** and the shape of the polygons it is
+ sometimes not possible to get the polygons small enough. **osmcoastline**
+ will warn you on STDERR if this is the case. Default is 1000.
+
+-o, --output=FILE
+: Spatialite database file for output. This option must be set.
+
+-p, --output-polygons=land|water|both|none
+: Which polygons to write out (default: land).
+
+-r, --output-rings
+: Output rings to database file. This is used for debugging purposes.
+
+-s, --srs=EPSGCODE
+: Set spatial reference system/projection. Use 4326 for WGS84 or 3857 for
+ "Google Mercator". If you want to use the data for the usual tiled web
+ maps, 3857 is probably right. For other uses, especially if you want to
+ re-project to some other projection, 4326 is probably right. Other
+ projections are curently not supported. Default is 4326.
+
+-v, --verbose
+: Gives you detailed information on what **osmcoastline** is doing,
+ including timing.
+
+
+# NOTES
+
+To speed up processing you might want to run the **osmcoastline_filter**
+program first. See its man page for details.
+
+
+# EXAMPLES
+
+Run **osmcoastline** on a planet file using default options:
+
+ osmcoastline -o coastline.db planet.osm.pbf
+
+Running **osmcoastline_filter** first:
+
+ osmcoastline_filter -o coastline.osm.pbf planet.osm.pbf
+ osmcoastline -o coastline.db coastline.osm.pbf
+
+
+# SEE ALSO
+
+* `README.md`
+* **osmcoastline_filter**(1), **osmcoastline_readmeta**(1), **osmcoastline_ways**(1)
+* [OSMCoastline in OSM wiki](http://wiki.openstreetmap.org/wiki/OSMCoastline)
+
diff --git a/man/osmcoastline_filter.md b/man/osmcoastline_filter.md
new file mode 100644
index 0000000..edc1219
--- /dev/null
+++ b/man/osmcoastline_filter.md
@@ -0,0 +1,55 @@
+
+# NAME
+
+osmcoastline_filter - filter coastline data from OSM file
+
+
+# SYNOPSIS
+
+**osmcoastline_filter** --output=*OUTPUT_FILE* *INPUT-FILE*
+
+**osmcoastline_filter** --help
+
+
+# DESCRIPTION
+
+**osmcoastline_filter** is used to filter all nodes and ways needed for
+building the coastlines from an OSM planet. The data is written to the
+output file in PBF format.
+
+This output file will be a lot smaller (less than 1%) than the original planet
+file, but it contains everything needed to assemble the coastline polygons.
+
+If you are playing around or want to run **osmcoastline** several times with
+different parameters, run **osmcoastline_filter** once first and use its output
+as the input for **osmcoastline**.
+
+**osmcoastline_filter** can read PBF and XML files, but write only PBF files.
+PBF files are much smaller and faster to read and write than XML files. The
+output file will first contain all ways tagged "natural=coastline", then all
+nodes used for those ways (and all nodes tagged "natural=coastline"). Having
+the ways first and the nodes later in the file is unusual for OSM files, but
+the **osmcoastline** and **osmcoastline_ways** programs work fine with it.
+
+
+# OPTIONS
+
+-h, --help
+: Display usage information
+
+-o, --output=OSMFILE
+: Where to write output (default: none)
+
+
+# EXAMPLES
+
+Run it as follows:
+
+ osmcoastline_filter -o coastline-data.osm.pbf planet.osm.pbf
+
+
+# SEE ALSO
+
+* **osmcoastline**(1), **osmcoastline_ways**(1)
+* [OSMCoastline in OSM wiki](http://wiki.openstreetmap.org/wiki/OSMCoastline)
+
diff --git a/man/osmcoastline_readmeta.md b/man/osmcoastline_readmeta.md
new file mode 100644
index 0000000..e096179
--- /dev/null
+++ b/man/osmcoastline_readmeta.md
@@ -0,0 +1,28 @@
+
+# NAME
+
+osmcoastline_readmeta - display metadata from database create by osmcoastline
+
+
+# SYNOPSIS
+
+**osmcoastline_readmeta** \[*COASTLINE-DB*\]
+
+
+# DESCRIPTION
+
+This program displays various meta data from a database created by the
+**osmcoastline** program.
+
+If no database name is specified on the command line "testdata.db" is used.
+
+Displayed are the command line options used to create the database, some
+statistics about the coastline, the number of warnings and errors detected
+and more.
+
+
+# SEE ALSO
+
+* **osmcoastline**(1)
+* [OSMCoastline in OSM wiki](http://wiki.openstreetmap.org/wiki/OSMCoastline)
+
diff --git a/man/osmcoastline_ways.md b/man/osmcoastline_ways.md
new file mode 100644
index 0000000..8ec3b25
--- /dev/null
+++ b/man/osmcoastline_ways.md
@@ -0,0 +1,34 @@
+
+# NAME
+
+osmcoastline_ways - extract coastline ways from OSM data
+
+
+# SYNOPSIS
+
+**osmcoastline_ways** *INPUT-FILE* \[*OUTPUT-DB*\]
+
+
+# DESCRIPTION
+
+**osmcoastline_ways** extracts coastline ways from OSM data and writes them
+into a Spatialite database. The output data is meant for debugging and
+statistics. Use the **osmcoastline** program to assemble coastlines for
+"real" use.
+
+You have to run **osmcoastline_ways** on the output of the
+**osmcoastline_filter** program, otherwise it will not work correctly!
+
+The data is written to the Spatialite database *OUTPUT-DB*. If *OUTPUT-DB* is
+not set, the default "coastline-ways.db" is used. A single table "ways" is
+written. It contains the IDs of all ways, their geometries, and the contents
+of their "name" and "source" tags.
+
+**osmcoastline_ways** outputs the sum of all way lengths.
+
+
+# SEE ALSO
+
+* **osmcoastline**(1), **osmcoastline_filter**(1)
+* [OSMCoastline in OSM wiki](http://wiki.openstreetmap.org/wiki/OSMCoastline)
+
diff --git a/osmcoastline_readmeta b/osmcoastline_readmeta
new file mode 100755
index 0000000..f1478b3
--- /dev/null
+++ b/osmcoastline_readmeta
@@ -0,0 +1,87 @@
+#!/bin/sh
+#
+# osmcoastline_readmeta [COASTLINEDB]
+#
+
+SQLEXEC="sqlite3"
+
+if [ "x$1" = "x" ]; then
+ DBFILE=testdata.db
+else
+ DBFILE=$1
+fi
+
+if [ ! -e $DBFILE ]; then
+ echo "Can't open '$DBFILE'"
+ exit 1
+fi
+
+echo "Options used to create this data:\n"
+
+echo -n " Overlap (--bbox-overlap/-b): "
+$SQLEXEC $DBFILE "SELECT overlap FROM options;"
+
+echo -n " Close gaps in coastline smaller than (--close-distance/-c): "
+$SQLEXEC $DBFILE "SELECT close_distance FROM options;"
+
+echo -n " Max points in polygons (--max-points/-m): "
+$SQLEXEC $DBFILE "SELECT max_points_in_polygons FROM options;"
+
+echo -n " Split large polygons: "
+$SQLEXEC $DBFILE "SELECT CASE split_large_polygons WHEN 0 THEN 'no' ELSE 'yes' END FROM options;"
+
+echo -n " Spatial reference system (--srid/-s): "
+$SQLEXEC $DBFILE "SELECT CASE srid WHEN 4326 THEN '4326 (WGS84)' WHEN 3857 THEN '3857 (Mercator)' ELSE srid END FROM geometry_columns WHERE f_table_name='land_polygons';"
+
+echo "\nMetadata:\n"
+
+echo -n " Database created at: "
+$SQLEXEC $DBFILE "SELECT timestamp FROM meta;"
+
+echo -n " Runtime (minutes): "
+$SQLEXEC $DBFILE "SELECT CAST(round(CAST(runtime AS REAL)/60) AS INT) FROM meta;"
+
+echo -n " Memory usage (MB): "
+$SQLEXEC $DBFILE "SELECT memory_usage FROM meta;"
+
+echo -n " Ways tagged natural=coastline: "
+$SQLEXEC $DBFILE "SELECT num_ways FROM meta;"
+
+echo -n " Number of nodes where coastline is not closed (before fixing): "
+$SQLEXEC $DBFILE "SELECT num_unconnected_nodes FROM meta;"
+
+echo -n " Coastline rings: "
+$SQLEXEC $DBFILE "SELECT num_rings FROM meta;"
+
+echo -n " Coastline rings created from a single way: "
+$SQLEXEC $DBFILE "SELECT num_rings_from_single_way FROM meta;"
+
+echo -n " Coastline rings created from more then one way: "
+$SQLEXEC $DBFILE "SELECT num_rings - num_rings_from_single_way FROM meta;"
+
+echo -n " Number of rings fixed (closed): "
+$SQLEXEC $DBFILE "SELECT num_rings_fixed FROM meta;"
+
+echo -n " Number of rings turned around: "
+$SQLEXEC $DBFILE "SELECT num_rings_turned_around FROM meta;"
+
+echo -n " Number of land polygons before split: "
+$SQLEXEC $DBFILE "SELECT num_land_polygons_before_split FROM meta;"
+
+echo -n " Number of land polygons after split: "
+$SQLEXEC $DBFILE "SELECT CASE num_land_polygons_after_split WHEN 0 THEN 'NOT SPLIT' ELSE num_land_polygons_after_split END FROM meta;"
+
+echo "\nErrors/warnings (Points):\n"
+echo ".width 3 20\nSELECT count(*), error FROM error_points GROUP BY error;" | $SQLEXEC -column $DBFILE | sed -e 's/^/ /'
+
+echo "\nErrors/warnings (LineStrings):\n"
+echo ".width 3 20\nSELECT count(*), error FROM error_lines GROUP BY error;" | $SQLEXEC -column $DBFILE | sed -e 's/^/ /'
+
+echo "\nOutput:\n"
+echo "SELECT count(*), 'land_polygons' FROM land_polygons;" | $SQLEXEC -column $DBFILE | sed -e 's/^/ /'
+echo "SELECT count(*), 'water_polygons' FROM water_polygons;" | $SQLEXEC -column $DBFILE | sed -e 's/^/ /'
+echo "SELECT count(*), 'lines' FROM lines;" | $SQLEXEC -column $DBFILE | sed -e 's/^/ /'
+echo "SELECT count(*), 'rings' FROM rings;" | $SQLEXEC -column $DBFILE | sed -e 's/^/ /'
+
+echo
+
diff --git a/osmcoastline_readmeta.sh b/osmcoastline_readmeta.sh
deleted file mode 100755
index 14f04be..0000000
--- a/osmcoastline_readmeta.sh
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/bin/sh
-#
-# osmcoastline_readmeta.sh [COASTLINEDB]
-#
-
-if [ "x$1" = "x" ]; then
- DBFILE=testdata.db
-else
- DBFILE=$1
-fi
-
-if [ ! -e $DBFILE ]; then
- echo "Can't open '$DBFILE'"
- exit 1
-fi
-
-echo "Options used to create this data:\n"
-
-echo -n " Overlap (--bbox-overlap/-b): "
-sqlite3 $DBFILE "SELECT overlap FROM options;"
-
-echo -n " Close gaps in coastline smaller than (--close-distance/-c): "
-sqlite3 $DBFILE "SELECT close_distance FROM options;"
-
-echo -n " Max points in polygons (--max-points/-m): "
-sqlite3 $DBFILE "SELECT max_points_in_polygons FROM options;"
-
-echo -n " Split large polygons: "
-sqlite3 $DBFILE "SELECT CASE split_large_polygons WHEN 0 THEN 'no' ELSE 'yes' END FROM options;"
-
-echo -n " Spatial reference system (--srid/-s): "
-sqlite3 $DBFILE "SELECT CASE srid WHEN 4326 THEN '4326 (WGS84)' WHEN 3857 THEN '3857 (Mercator)' ELSE srid END FROM geometry_columns WHERE f_table_name='land_polygons';"
-
-echo "\nMetadata:\n"
-
-echo -n " Database created at: "
-sqlite3 $DBFILE "SELECT timestamp FROM meta;"
-
-echo -n " Runtime (minutes): "
-sqlite3 $DBFILE "SELECT CAST(round(CAST(runtime AS REAL)/60) AS INT) FROM meta;"
-
-echo -n " Memory usage (MB): "
-sqlite3 $DBFILE "SELECT memory_usage FROM meta;"
-
-echo -n " Ways tagged natural=coastline: "
-sqlite3 $DBFILE "SELECT num_ways FROM meta;"
-
-echo -n " Number of nodes where coastline is not closed (before fixing): "
-sqlite3 $DBFILE "SELECT num_unconnected_nodes FROM meta;"
-
-echo -n " Coastline rings: "
-sqlite3 $DBFILE "SELECT num_rings FROM meta;"
-
-echo -n " Coastline rings created from a single way: "
-sqlite3 $DBFILE "SELECT num_rings_from_single_way FROM meta;"
-
-echo -n " Coastline rings created from more then one way: "
-sqlite3 $DBFILE "SELECT num_rings - num_rings_from_single_way FROM meta;"
-
-echo -n " Number of rings fixed (closed): "
-sqlite3 $DBFILE "SELECT num_rings_fixed FROM meta;"
-
-echo -n " Number of rings turned around: "
-sqlite3 $DBFILE "SELECT num_rings_turned_around FROM meta;"
-
-echo -n " Number of land polygons before split: "
-sqlite3 $DBFILE "SELECT num_land_polygons_before_split FROM meta;"
-
-echo -n " Number of land polygons after split: "
-sqlite3 $DBFILE "SELECT CASE num_land_polygons_after_split WHEN 0 THEN 'NOT SPLIT' ELSE num_land_polygons_after_split END FROM meta;"
-
-echo "\nErrors/warnings (Points):\n"
-echo ".width 3 20\nSELECT count(*), error FROM error_points GROUP BY error;" | sqlite3 -column $DBFILE | sed -e 's/^/ /'
-
-echo "\nErrors/warnings (LineStrings):\n"
-echo ".width 3 20\nSELECT count(*), error FROM error_lines GROUP BY error;" | sqlite3 -column $DBFILE | sed -e 's/^/ /'
-
-echo "\nOutput:\n"
-echo "SELECT count(*), 'land_polygons' FROM land_polygons;" | sqlite3 -column $DBFILE | sed -e 's/^/ /'
-echo "SELECT count(*), 'water_polygons' FROM water_polygons;" | sqlite3 -column $DBFILE | sed -e 's/^/ /'
-echo "SELECT count(*), 'lines' FROM lines;" | sqlite3 -column $DBFILE | sed -e 's/^/ /'
-echo "SELECT count(*), 'rings' FROM rings;" | sqlite3 -column $DBFILE | sed -e 's/^/ /'
-
-echo
-
diff --git a/runtest.sh.in b/runtest.sh.in
index bb92c6d..acd4a4e 100755
--- a/runtest.sh.in
+++ b/runtest.sh.in
@@ -4,5 +4,5 @@ if [ "x$1" = "x-v" ]; then
osmcoastline_valgrind="valgrind --leak-check=full --show-reachable=yes"
fi
-exec $osmcoastline_valgrind ./osmcoastline --debug --verbose --overwrite --output-lines --output-polygons=both --output-rings -o testdata.db @PROJECT_SOURCE_DIR@/testdata.osm
+exec $osmcoastline_valgrind src/osmcoastline --debug --verbose --overwrite --output-lines --output-polygons=both --output-rings -o testdata.db @PROJECT_SOURCE_DIR@/testdata.osm
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 0000000..93f2d6b
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,20 @@
+#-----------------------------------------------------------------------------
+#
+# CMake Config
+#
+# OSMCoastline
+#
+#-----------------------------------------------------------------------------
+
+add_executable(osmcoastline osmcoastline.cpp coastline_ring.cpp coastline_ring_collection.cpp coastline_polygons.cpp output_database.cpp output_layers.cpp srs.cpp options.cpp)
+target_link_libraries(osmcoastline ${OSMIUM_IO_LIBRARIES} ${GDAL_LIBRARIES} ${GEOS_C_LIBRARIES})
+install(TARGETS osmcoastline DESTINATION bin)
+
+add_executable(osmcoastline_filter osmcoastline_filter.cpp)
+target_link_libraries(osmcoastline_filter ${OSMIUM_IO_LIBRARIES})
+install(TARGETS osmcoastline_filter DESTINATION bin)
+
+add_executable(osmcoastline_ways osmcoastline_ways.cpp osmcoastline.hpp)
+target_link_libraries(osmcoastline_ways ${OSMIUM_IO_LIBRARIES} ${GDAL_LIBRARIES})
+install(TARGETS osmcoastline_ways DESTINATION bin)
+
diff --git a/coastline_handlers.hpp b/src/coastline_handlers.hpp
similarity index 96%
rename from coastline_handlers.hpp
rename to src/coastline_handlers.hpp
index f6a9d24..2eeca6f 100644
--- a/coastline_handlers.hpp
+++ b/src/coastline_handlers.hpp
@@ -22,6 +22,9 @@
*/
+#include <iostream>
+#include <utility>
+
#include <osmium/handler.hpp>
#include <osmium/geom/ogr.hpp>
@@ -40,8 +43,7 @@ class CoastlineHandlerPass1 : public osmium::handler::Handler {
public:
CoastlineHandlerPass1(CoastlineRingCollection& coastline_rings) :
- m_coastline_rings(coastline_rings)
- {
+ m_coastline_rings(coastline_rings) {
}
void way(const osmium::Way& way) {
@@ -82,8 +84,7 @@ public:
CoastlineHandlerPass2(CoastlineRingCollection& coastline_rings, OutputDatabase& output) :
m_coastline_rings(coastline_rings),
m_posmap(),
- m_output(output)
- {
+ m_output(output) {
m_coastline_rings.setup_positions(m_posmap);
}
diff --git a/coastline_polygons.cpp b/src/coastline_polygons.cpp
similarity index 99%
rename from coastline_polygons.cpp
rename to src/coastline_polygons.cpp
index 8f472a7..8094327 100644
--- a/coastline_polygons.cpp
+++ b/src/coastline_polygons.cpp
@@ -315,7 +315,7 @@ void CoastlinePolygons::split_bbox(OGREnvelope e, polygon_vector_type&& v) {
break;
}
}
- } catch(...) {
+ } catch (...) {
std::cerr << "ignoring exception\n";
}
} else {
diff --git a/coastline_polygons.hpp b/src/coastline_polygons.hpp
similarity index 98%
rename from coastline_polygons.hpp
rename to src/coastline_polygons.hpp
index 8b39b39..7d7e8a4 100644
--- a/coastline_polygons.hpp
+++ b/src/coastline_polygons.hpp
@@ -92,7 +92,9 @@ public:
}
/// Number of polygons
- int num_polygons() const { return m_polygons.size(); }
+ int num_polygons() const {
+ return m_polygons.size();
+ }
polygon_vector_type::const_iterator begin() const {
return m_polygons.begin();
diff --git a/coastline_ring.cpp b/src/coastline_ring.cpp
similarity index 100%
rename from coastline_ring.cpp
rename to src/coastline_ring.cpp
diff --git a/coastline_ring.hpp b/src/coastline_ring.hpp
similarity index 89%
rename from coastline_ring.hpp
rename to src/coastline_ring.hpp
index 80f3c29..e930b7a 100644
--- a/coastline_ring.hpp
+++ b/src/coastline_ring.hpp
@@ -24,6 +24,8 @@
#include <map>
#include <memory>
+#include <ostream>
+#include <vector>
#include <osmium/geom/ogr.hpp>
#include <osmium/osm/undirected_segment.hpp>
@@ -91,8 +93,7 @@ public:
m_ring_id(way.id()),
m_nways(1),
m_fixed(false),
- m_outer(false)
- {
+ m_outer(false) {
m_way_node_list.reserve(way.is_closed() ? way.nodes().size() : 1000);
m_way_node_list.insert(m_way_node_list.begin(), way.nodes().begin(), way.nodes().end());
}
@@ -106,19 +107,29 @@ public:
}
/// ID of first node in the ring.
- osmium::object_id_type first_node_id() const { return m_way_node_list.front().ref(); }
+ osmium::object_id_type first_node_id() const {
+ return m_way_node_list.front().ref();
+ }
/// ID of last node in the ring.
- osmium::object_id_type last_node_id() const { return m_way_node_list.back().ref(); }
+ osmium::object_id_type last_node_id() const {
+ return m_way_node_list.back().ref();
+ }
/// Position of the first node in the ring.
- osmium::Location first_position() const { return m_way_node_list.front().location(); }
+ osmium::Location first_position() const {
+ return m_way_node_list.front().location();
+ }
/// Position of the last node in the ring.
- osmium::Location last_position() const { return m_way_node_list.back().location(); }
+ osmium::Location last_position() const {
+ return m_way_node_list.back().location();
+ }
/// Return ID of this ring (defined as smallest ID of the ways making up the ring).
- osmium::object_id_type ring_id() const { return m_ring_id; }
+ osmium::object_id_type ring_id() const {
+ return m_ring_id;
+ }
/**
* Set ring ID. The ring will only get the new ID if it is smaller than the
@@ -131,16 +142,24 @@ public:
}
/// Returns the number of ways making up this ring.
- unsigned int nways() const { return m_nways; }
+ unsigned int nways() const {
+ return m_nways;
+ }
/// Returns the number of points in this ring.
- unsigned int npoints() const { return m_way_node_list.size(); }
+ unsigned int npoints() const {
+ return m_way_node_list.size();
+ }
/// Returns true if the ring is closed.
- bool is_closed() const { return first_node_id() == last_node_id(); }
+ bool is_closed() const {
+ return first_node_id() == last_node_id();
+ }
/// Was this ring fixed because of missing/wrong OSM data?
- bool is_fixed() const { return m_fixed; }
+ bool is_fixed() const {
+ return m_fixed;
+ }
/**
* When there are two different nodes with the same position
diff --git a/coastline_ring_collection.cpp b/src/coastline_ring_collection.cpp
similarity index 100%
rename from coastline_ring_collection.cpp
rename to src/coastline_ring_collection.cpp
diff --git a/coastline_ring_collection.hpp b/src/coastline_ring_collection.hpp
similarity index 87%
rename from coastline_ring_collection.hpp
rename to src/coastline_ring_collection.hpp
index 42d7eef..09502a8 100644
--- a/coastline_ring_collection.hpp
+++ b/src/coastline_ring_collection.hpp
@@ -23,6 +23,8 @@
*/
#include <list>
+#include <map>
+#include <memory>
#include <vector>
#include <osmium/geom/ogr.hpp>
@@ -65,7 +67,9 @@ public:
CoastlineRingCollection();
/// Return the number of CoastlineRings in the collection.
- size_t size() const { return m_list.size(); }
+ size_t size() const {
+ return m_list.size();
+ }
/**
* Add way to collection. A new CoastlineRing will be created for the way
@@ -81,13 +85,21 @@ public:
}
}
- unsigned int num_ways() const { return m_ways; }
+ unsigned int num_ways() const {
+ return m_ways;
+ }
- unsigned int num_rings_from_single_way() const { return m_rings_from_single_way; }
+ unsigned int num_rings_from_single_way() const {
+ return m_rings_from_single_way;
+ }
- unsigned int num_unconnected_nodes() const { return m_start_nodes.size() + m_end_nodes.size(); }
+ unsigned int num_unconnected_nodes() const {
+ return m_start_nodes.size() + m_end_nodes.size();
+ }
- unsigned int num_fixed_rings() const { return m_fixed_rings; }
+ unsigned int num_fixed_rings() const {
+ return m_fixed_rings;
+ }
void setup_positions(posmap_type& posmap);
@@ -124,7 +136,9 @@ private:
}
// Used in std::sort
- static bool sort_by_distance(const Connection& a, const Connection& b) { return a.distance > b.distance; }
+ static bool sort_by_distance(const Connection& a, const Connection& b) {
+ return a.distance > b.distance;
+ }
};
diff --git a/ogr_include.hpp b/src/ogr_include.hpp
similarity index 100%
rename from ogr_include.hpp
rename to src/ogr_include.hpp
diff --git a/options.cpp b/src/options.cpp
similarity index 79%
rename from options.cpp
rename to src/options.cpp
index ae99b0d..339c56d 100644
--- a/options.cpp
+++ b/src/options.cpp
@@ -45,8 +45,7 @@ Options::Options(int argc, char* argv[]) :
epsg(4326),
simplify(false),
tolerance(0),
- verbose(false)
-{
+ verbose(false) {
static struct option long_options[] = {
{"bbox-overlap", required_argument, 0, 'b'},
{"close-distance", required_argument, 0, 'c'},
@@ -175,23 +174,23 @@ int Options::get_epsg(const char* text) {
void Options::print_help() const {
std::cout << "osmcoastline [OPTIONS] OSMFILE\n"
- << "\nOptions:\n"
- << " -h, --help - This help message\n"
- << " -c, --close-distance=DIST - Distance between nodes under which open rings\n"
- << " are closed (0 - disable closing of rings)\n"
- << " -b, --bbox-overlap=OVERLAP - Set overlap when splitting polygons\n"
- << " -i, --no-index - Do not create spatial indexes in output db\n"
- << " -d, --debug - Enable debugging output\n"
- << " -f, --overwrite - Overwrite output file if it already exists\n"
- << " -l, --output-lines - Output coastlines as lines to database file\n"
- << " -m, --max-points=NUM - Split lines/polygons with more than this many\n"
- << " points (0 - disable splitting)\n"
- << " -o, --output-database=FILE - Spatialite database file for output\n"
- << " -p, --output-polygons=land|water|both|none\n"
- << " - Which polygons to write out (default: land)\n"
- << " -r, --output-rings - Output rings to database file\n"
- << " -s, --srs=EPSGCODE - Set SRS (4326 for WGS84 (default) or 3857)\n"
- << " -v, --verbose - Verbose output\n"
- << "\n";
+ << "\nOptions:\n"
+ << " -h, --help - This help message\n"
+ << " -c, --close-distance=DIST - Distance between nodes under which open rings\n"
+ << " are closed (0 - disable closing of rings)\n"
+ << " -b, --bbox-overlap=OVERLAP - Set overlap when splitting polygons\n"
+ << " -i, --no-index - Do not create spatial indexes in output db\n"
+ << " -d, --debug - Enable debugging output\n"
+ << " -f, --overwrite - Overwrite output file if it already exists\n"
+ << " -l, --output-lines - Output coastlines as lines to database file\n"
+ << " -m, --max-points=NUM - Split lines/polygons with more than this many\n"
+ << " points (0 - disable splitting)\n"
+ << " -o, --output-database=FILE - Spatialite database file for output\n"
+ << " -p, --output-polygons=land|water|both|none\n"
+ << " - Which polygons to write out (default: land)\n"
+ << " -r, --output-rings - Output rings to database file\n"
+ << " -s, --srs=EPSGCODE - Set SRS (4326 for WGS84 (default) or 3857)\n"
+ << " -v, --verbose - Verbose output\n"
+ << "\n";
}
diff --git a/options.hpp b/src/options.hpp
similarity index 100%
rename from options.hpp
rename to src/options.hpp
diff --git a/osmcoastline.cpp b/src/osmcoastline.cpp
similarity index 99%
rename from osmcoastline.cpp
rename to src/osmcoastline.cpp
index cd04804..c63bcfd 100644
--- a/osmcoastline.cpp
+++ b/src/osmcoastline.cpp
@@ -236,7 +236,7 @@ int main(int argc, char *argv[]) {
stats.rings_fixed = coastline_rings.num_fixed_rings();
warnings += coastline_rings.num_fixed_rings();
vout << " Closed " << coastline_rings.num_fixed_rings() << " rings. This left "
- << coastline_rings.num_unconnected_nodes() << " nodes where the coastline could not be closed.\n";
+ << coastline_rings.num_unconnected_nodes() << " nodes where the coastline could not be closed.\n";
errors += coastline_rings.num_unconnected_nodes();
} else {
vout << "Not closing broken rings (because you used the option --close-distance/-c 0).\n";
diff --git a/osmcoastline.hpp b/src/osmcoastline.hpp
similarity index 100%
rename from osmcoastline.hpp
rename to src/osmcoastline.hpp
diff --git a/osmcoastline_filter.cpp b/src/osmcoastline_filter.cpp
similarity index 100%
rename from osmcoastline_filter.cpp
rename to src/osmcoastline_filter.cpp
diff --git a/osmcoastline_ways.cpp b/src/osmcoastline_ways.cpp
similarity index 90%
rename from osmcoastline_ways.cpp
rename to src/osmcoastline_ways.cpp
index c27c28b..35b97ab 100644
--- a/osmcoastline_ways.cpp
+++ b/src/osmcoastline_ways.cpp
@@ -21,6 +21,7 @@
#include <iostream>
#include <set>
+#include <string>
#include <osmium/geom/haversine.hpp>
#include <osmium/geom/ogr.hpp>
@@ -46,7 +47,7 @@ class CoastlineWaysHandler : public osmium::handler::Handler {
public:
- CoastlineWaysHandler() :
+ CoastlineWaysHandler(const std::string& db_filename) :
m_length(0.0) {
OGRRegisterAll();
@@ -59,7 +60,7 @@ public:
CPLSetConfigOption("OGR_SQLITE_SYNCHRONOUS", "FALSE");
const char* options[] = { "SPATIALITE=TRUE", nullptr };
- m_data_source.reset(driver->CreateDataSource("coastline-ways.db", const_cast<char**>(options)));
+ m_data_source.reset(driver->CreateDataSource(db_filename.c_str(), const_cast<char**>(options)));
if (!m_data_source) {
std::cerr << "Creation of output file failed.\n";
exit(return_code_fatal);
@@ -139,21 +140,28 @@ public:
};
int main(int argc, char* argv[]) {
- if (argc != 2) {
- std::cerr << "Usage: osmcoastline_ways OSMFILE\n";
+ if (argc != 2 && argc != 3) {
+ std::cerr << "Usage: osmcoastline_ways OSMFILE [WAYSDB]\n";
exit(return_code_cmdline);
}
+ std::string input_osm_filename { argv[1] };
+ std::string output_db_filename { "coastline-ways.db" };
+
+ if (argc >= 3) {
+ output_db_filename = argv[2];
+ }
+
index_type store_pos;
index_type store_neg;
node_location_handler_type location_handler(store_pos, store_neg);
- osmium::io::File infile(argv[1]);
+ osmium::io::File infile(input_osm_filename);
osmium::io::Reader reader1(infile, osmium::osm_entity_bits::node);
osmium::apply(reader1, location_handler);
reader1.close();
- CoastlineWaysHandler coastline_ways_handler;
+ CoastlineWaysHandler coastline_ways_handler(output_db_filename);
osmium::io::Reader reader2(infile, osmium::osm_entity_bits::way);
osmium::apply(reader2, location_handler, coastline_ways_handler);
reader2.close();
diff --git a/output_database.cpp b/src/output_database.cpp
similarity index 99%
rename from output_database.cpp
rename to src/output_database.cpp
index 2db050e..87116d3 100644
--- a/output_database.cpp
+++ b/src/output_database.cpp
@@ -44,8 +44,7 @@ OutputDatabase::OutputDatabase(const std::string& outdb, bool with_index) :
m_layer_rings(),
m_layer_land_polygons(),
m_layer_water_polygons(),
- m_layer_lines()
-{
+ m_layer_lines() {
OGRRegisterAll();
const char* driver_name = "SQLite";
diff --git a/output_database.hpp b/src/output_database.hpp
similarity index 100%
rename from output_database.hpp
rename to src/output_database.hpp
diff --git a/output_layers.cpp b/src/output_layers.cpp
similarity index 99%
rename from output_layers.cpp
rename to src/output_layers.cpp
index b35e024..969eea2 100644
--- a/output_layers.cpp
+++ b/src/output_layers.cpp
@@ -48,8 +48,7 @@ void Layer::commit() {
/***************************************************************/
LayerErrorPoints::LayerErrorPoints(OGRDataSource* data_source, const char** options) :
- Layer()
-{
+ Layer() {
m_layer = data_source->CreateLayer("error_points", srs.out(), wkbPoint, const_cast<char**>(options));
if (!m_layer) {
std::cerr << "Creating layer 'error_points' failed.\n";
@@ -93,8 +92,7 @@ void LayerErrorPoints::add(OGRPoint* point, const char* error, osmium::object_id
/***************************************************************/
LayerErrorLines::LayerErrorLines(OGRDataSource* data_source, const char** options) :
- Layer()
-{
+ Layer() {
m_layer = data_source->CreateLayer("error_lines", srs.out(), wkbLineString, const_cast<char**>(options));
if (!m_layer) {
std::cerr << "Creating layer 'error_lines' failed.\n";
@@ -138,8 +136,7 @@ void LayerErrorLines::add(OGRLineString* linestring, const char* error, osmium::
/***************************************************************/
LayerRings::LayerRings(OGRDataSource* data_source, const char** options) :
- Layer()
-{
+ Layer() {
m_layer = data_source->CreateLayer("rings", srs.out(), wkbPolygon, const_cast<char**>(options));
if (!m_layer) {
std::cerr << "Creating layer 'rings' failed.\n";
@@ -269,8 +266,7 @@ void LayerRings::add(OGRPolygon* polygon, int osm_id, int nways, int npoints, bo
LayerPolygons::LayerPolygons(OGRDataSource* data_source, const char** options, const char* name) :
Layer(),
- m_name(name)
-{
+ m_name(name) {
m_layer = data_source->CreateLayer(name, srs.out(), wkbPolygon, const_cast<char**>(options));
if (!m_layer) {
std::cerr << "Creating layer '" << name << "' failed.\n";
@@ -298,8 +294,7 @@ void LayerPolygons::add(OGRPolygon* polygon) {
/***************************************************************/
LayerLines::LayerLines(OGRDataSource* data_source, const char** options) :
- Layer()
-{
+ Layer() {
m_layer = data_source->CreateLayer("lines", srs.out(), wkbLineString, const_cast<char**>(options));
if (!m_layer) {
std::cerr << "Creating layer 'lines' failed.\n";
diff --git a/output_layers.hpp b/src/output_layers.hpp
similarity index 100%
rename from output_layers.hpp
rename to src/output_layers.hpp
diff --git a/srs.cpp b/src/srs.cpp
similarity index 100%
rename from srs.cpp
rename to src/srs.cpp
diff --git a/srs.hpp b/src/srs.hpp
similarity index 83%
rename from srs.hpp
rename to src/srs.hpp
index 2f53e89..ff4e530 100644
--- a/srs.hpp
+++ b/src/srs.hpp
@@ -60,8 +60,12 @@ public:
*/
bool set_output(int epsg);
- OGRSpatialReference* wgs84() { return &m_srs_wgs84; }
- OGRSpatialReference* out() { return &m_srs_out; }
+ OGRSpatialReference* wgs84() {
+ return &m_srs_wgs84;
+ }
+ OGRSpatialReference* out() {
+ return &m_srs_out;
+ }
/**
* Transform geometry to output SRS (if it is not in the output SRS
@@ -79,9 +83,15 @@ public:
* bogus. They are near the antimeridian or southern edge of the
* map and only there to close the coastline polygons.
*/
- double max_x() const { return m_transform ? 20037500.0 : 179.9999; }
- double min_x() const { return m_transform ? -20037500.0 : -179.9999; }
- double min_y() const { return m_transform ? -20037400.0 : -85.049; }
+ double max_x() const {
+ return m_transform ? 20037500.0 : 179.9999;
+ }
+ double min_x() const {
+ return m_transform ? -20037500.0 : -179.9999;
+ }
+ double min_y() const {
+ return m_transform ? -20037400.0 : -85.049;
+ }
};
diff --git a/stats.hpp b/src/stats.hpp
similarity index 100%
rename from stats.hpp
rename to src/stats.hpp
diff --git a/verbose_output.hpp b/src/verbose_output.hpp
similarity index 96%
rename from verbose_output.hpp
rename to src/verbose_output.hpp
index 555a592..5284b0b 100644
--- a/verbose_output.hpp
+++ b/src/verbose_output.hpp
@@ -1,6 +1,9 @@
#ifndef VERBOSE_OUTPUT_HPP
#define VERBOSE_OUTPUT_HPP
+#include <iostream>
+#include <sstream>
+
class VerboseOutput {
time_t m_start;
diff --git a/taginfo.json b/taginfo.json
index a9eed7b..3360c60 100644
--- a/taginfo.json
+++ b/taginfo.json
@@ -8,7 +8,7 @@
"doc_url": "https://github.com/osmcode/osmcoastline",
"icon_url": "http://osmcode.org/img/logo-osmcoastline-16x16.png",
"contact_name": "Jochen Topf",
- "contact_email": "jochen at remote.org",
+ "contact_email": "jochen at topf.org",
"keywords": [
"export"
]
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/osmcoastline.git
More information about the Pkg-grass-devel
mailing list