All Projects → AMDmi3 → Glosm

AMDmi3 / Glosm

Licence: agpl-3.0
3D OpenStreetMap renderer

Projects that are alternatives of or similar to Glosm

Makina Maps
Full Stack to Build, Serve and Update your own Vector and Raster Tiles from OpenStreetMap Data.
Stars: ✭ 52 (-40.91%)
Mutual labels:  openstreetmap
Graphia
A visualisation tool for the creation and analysis of graphs
Stars: ✭ 67 (-23.86%)
Mutual labels:  visualisation
Osmcoastline
Extracts coastline data from OpenStreetMap planet file.
Stars: ✭ 79 (-10.23%)
Mutual labels:  openstreetmap
Openrouteservice R
🌐 R package to query openrouteservice.org
Stars: ✭ 57 (-35.23%)
Mutual labels:  openstreetmap
Pydata Pandas Workshop
Material for my PyData Jupyter & Pandas Workshops, I'm also available for personal in-house trainings on request
Stars: ✭ 65 (-26.14%)
Mutual labels:  visualisation
Openstreetmap
Interface to OpenStreetMap (load maps, extract road connectivity, plot road network & find shortest path)
Stars: ✭ 69 (-21.59%)
Mutual labels:  openstreetmap
Urbansprawl
Open framework for calculating spatial urban sprawl indices and performing disaggregated population estimates using open data
Stars: ✭ 48 (-45.45%)
Mutual labels:  openstreetmap
Influxgraph
Graphite InfluxDB backend. InfluxDB storage finder / plugin for Graphite API.
Stars: ✭ 87 (-1.14%)
Mutual labels:  visualisation
Laravel Leaflet Example
Laravel Leaflet JS project example.
Stars: ✭ 66 (-25%)
Mutual labels:  openstreetmap
Openmaptiles
OpenMapTiles Vector Tile Schema Implementation
Stars: ✭ 1,175 (+1235.23%)
Mutual labels:  openstreetmap
Hacktobermap
A map of Hacktoberfest 2019 participants https://abhijitparida.github.io/hacktobermap/
Stars: ✭ 59 (-32.95%)
Mutual labels:  openstreetmap
Dijkstra Cartography
Using Dijkstra's algorithm ("finding the shortest paths between nodes in a graph") to draw maps 🌍.
Stars: ✭ 1,112 (+1163.64%)
Mutual labels:  openstreetmap
Zipcode Belgium
zip code, longitude / latitude of belgian cities | code postal, longitude / latitude des communes belges
Stars: ✭ 70 (-20.45%)
Mutual labels:  openstreetmap
Nominatim Docker
Fully-featured container for geocoding, reverse geocoding and address lookup based on Nominatim and Open Street Map data.
Stars: ✭ 52 (-40.91%)
Mutual labels:  openstreetmap
Openstreetmap Website
The Rails application that powers OpenStreetMap
Stars: ✭ 1,259 (+1330.68%)
Mutual labels:  openstreetmap
Openstreetmap Cartographic
A port of OpenStreetMap Carto to Mapbox GL for client-side rendering
Stars: ✭ 50 (-43.18%)
Mutual labels:  openstreetmap
Spirit
Atomistic Spin Simulation Framework
Stars: ✭ 67 (-23.86%)
Mutual labels:  visualisation
Osm Analytics
OSM Analytics lets you interactively analyze how specific OpenStreetMap features are mapped in a specific region.
Stars: ✭ 87 (-1.14%)
Mutual labels:  openstreetmap
Teslamate
A self-hosted data logger for your Tesla 🚘
Stars: ✭ 1,255 (+1326.14%)
Mutual labels:  openstreetmap
Photon
an open source geocoder for openstreetmap data
Stars: ✭ 1,177 (+1237.5%)
Mutual labels:  openstreetmap
                          glosm 0.0.3
                         =============

glosm is a framework for developing high-performance geospatial data visualization applications of both interactive and batch nature featuring OpenGL-based 3D first-person and tile renderers.

Features

  • Basic OSM XML loader
  • Basic geometry generator (renders buildings, barriers and roads in 3D, other polygons as lines at ground level)
  • Mercator and spherical projections
  • Support for tracks in GPX format
  • SRTM elevation data support
  • First-person real-time 3D map viewer
  • Command-line ortho tile renderer
  • Extensible framework for building (other) 3D geodata visualization applications

Requirements

Libraries: * expat2 * OpenGL * GLEW (only required on windows) * SDL or GLUT (only required for viewer) * SDL_gles (only required for viewer on OpenGL ES platforms) * libpng (only required for tiler) * X11 (only required for tiler) Applications: * CMake >= 2.6

since CMake builtin GLUT detection routine requires it for some reason, you will also need libXmu and libXi installed.

Summarizing, for Debian-based systems, you'll need to run:

apt-get install cmake libexpat1-dev libglut3-dev libsdl1.2-dev \
    libpng12-dev libxmu-dev libxi-dev

Installation

Compilation: cmake . && make
Installation: make install

Note that you don't need to install it to run programs, and in case you really want to install it, you may need to tweak installation prefix (either by providing -DCMAKE_INSTALL_PREFIX=... to cmake or with ccmake as below). Also note that cmake doesn't provide uninstall target.

You can use curses frontend for cmake (ccmake) to select optional components interactively or specify -DBUILD_TILER=[YES|NO] and -DBUILD_VIEWER=[YES|NO] in cmake arguments to enable/disable building of specific applications. By default, viewer is always built and tiler is only build on UNIX platforms.

If you plan to hack on glosm source, it's better idea to use so-called out-of-source build to not pollute source tree with build files. Here's how it's done:

mkdir build && cd build && cmake .. && make

On FreeBSD, glosm is also available from ports collection (graphics/glosm, [1]).

Native build on Windows has not been tested yet, but cross-compilation works (see [2]) and native compilation should work similarily.

[1] http://www.freshports.org/graphics/glosm [2] https://github.com/AMDmi3/glosm/wiki/CrossCompilation

Usage

This package contains two applications: interactive map viewer (glosm-viewer) and .png tile generator (glosm-tiler).

glosm-viewer

glosm-viewer [-sfh] [-t <path>] [-l location] <file.osm|->
                                                 [<file.gpx> ...]

runs interactive 3D map viewer for a specified map dump. Dumps can be obtained from OpenStreetMap editing applications (jOSM, Mercator), via OpenStreetMap API, from third parties and in many other ways. Sample (fake) .osm file is provided in this package under testdata/ subdirectory.

If `-' is provided as filename, osm data is read from stdin.

Please be careful with large dumps, as the application requires amount of RAM comparable to the .osm file size. It also takes some time (under a minute, however) to load a large dump.

Options:

-s      - enable spherical Earth view (instead of mercator)
-f      - disable GLEW OpenGL version check (for testing purposes)
-h      - show help
-t      - specify path to directory with SRTM (*.hgt) files and
          enable 3D terrain layer
-l      - specify initial position and direction of viewer.
          Argument is comma-separated list of floating-point values:
          longitude, latitude, elevation, yaw and pitch. Each value
          may be empty and extra values in the end may be omitted, in
          which case program defaults are used. Values are specified
          in decimal angles and meters.
          example: -l 57.33,34.11,100
                         (55.33E, 34.11N, height = 100 meters)
          example: -l ,,100,180,0
                         (default location, height = 100 meters,
                          look straight to south)

Controls:

W or Up     - move forward
S or Down   - move backward
A or Left   - move left
D or Right  - move right
C           - move down
Space       - move up
L           - toggle height lock (useful for fly-by's)
H           - same as L, but locks you at human height
+           - increase movement speed by 5x
-           - decrease movement speed by 5x
Shift       - increase movement speed by 5x when pressed (SDL only)
Ctrl        - decrease movement speed by 5x when pressed (SDL only)
1           - toggle lowres (ground) layer
2           - toggle hires (buildings) layer
3           - toggle GPX layer
4           - toggle terrain layer
Q or Escape - close application

Right mouse button toggles mouse grab. When grab is off, view
may be dragged with left mouse button.

glosm-tiler

glosm-tiler [options] <file.osm|-> <outdir>

runs tile renderer for a specified dump, which are saved into outdir in the same format as mapnik tiles (///.png).

If `-' is provided as filename, osm data is read from stdin.

Options:

-0..-9     - set png compression level (default 6)

-x minlon
-X maxlon
-y minlat
-Y maxlat  - set bounding box for rendering. Units are floating
             point degrees (e.g. 55.12345)

-z minzoom
-Z maxzoom - set zoom levels for rendering. Default 0 - 18

-s skew    - set skew for pseudo-3D effect (default = 1.0, 0 =
             no skew = map without 3D effect)

-m samples - specify number of samples for multisample antialiasing
             (default = 4, use 1 if your drivers doesn't support
             multisampling)

Note on optimizing tiles

For optimal rendering speed and minimal space taken by tiles, it's usually better to render tiles with -1 (minimal compression level), and compress them by optipng afterwards:

find -name "*.png" -print0 | xargs -0 -n 64 -P optipng -quiet -o1

where outdir is directory containing tiles and jobs is desired number of jobs (probably # of cpus + 1).

OpenGL details

Application requires OpenGL version >= 1.5. Currently, only notable required feature is buffer objects support (glGenBuffers et al.)

When GLEW is used, two checks for required OpenGL functionality are done: GLEW check for GL_VERSION_1_5 and check for required functions != NULL. The first is disabled with -f option to viewer, if this options makes viewer work for you, please report.

Additionally, glosm-tiler requires pbuffer support and that is currently only available through GLX, thus X11 installation is required to use glosm-tiler.

Multisampling support is also highly recommended.

OpenStreetMap tag support

There are some notable tags this software supports:

* height
* min_height
* building:levels
* building:min_level
* building:ground_level
* building:skipped_levels (see [3])

to determine height of 3D objects (buildings, barriers). See [2]. Height of one level is taken as 3 meters, for some 1-level buildings 1 meter is added for basement.

[2] http://wiki.openstreetmap.org/wiki/User%3AJongleur/MultiLevel_Building_Shapes [3] http://wiki.openstreetmap.org/wiki/User_talk:Jongleur/MultiLevel_Building_Shapes

* building:roof:shape
* building:roof:orientation
* building:roof:angle

for specific roof shapes support. See [4]. Supported roof shapes are: flat, pitched, hipped, pyramidal, conical (currently same as pyramidal), crosspitched.

[4] http://wiki.openstreetmap.org/wiki/Proposed_features/Building_attributes

* width
* lanes

for highway widths.

API stability

As the project is on early stages of development, neither API not ABI compatibility is guaranteed, so for now use library on your own risk. Because of that, neither versioned library (.so.N) nor includes are currently installed.

Primary candidates for API change are:

* OsmDatasource interface
* GeometryGenerator (due to above)
* Geometry (material support, serialization)

Tests

There are some tests under tests/ subdirectory, you can run them by running `ctest' from your buildtree.

Documentation

Doxygen is supported, just run `doxygen' from this directory to generate class descriptions under doc/html/. There's also some more documentation under doc/.

There are some simple examples of working with glosm under examples/ subdirectory.

License

This software is distributed under the GNU Affero General Public License version 3. Please read the COPYING file for more information.

Credits

Author: Dmitry Marakasov [email protected]

Contacts

Apart from emails above,

* Source code repository:
  https://github.com/AMDmi3/glosm

* Wiki:
  https://github.com/AMDmi3/glosm/wiki

* Demo of tiler-generated raster map:
  http://glosm.amdmi3.ru

* Page on OSM wiki with some screenshots:
  http://wiki.openstreetmap.org/wiki/Glosm
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].