Skip to content

nextgis/nextgis_datastore

Repository files navigation

NextGIS storage and visualisation support library

Carthage compatible

Intro

NextGIS storage and visualization support library is a C++ library with C and Kotlin bindings. The library provides API to optimized vector and raster geodata storage, reading and modification (datasource) and maps creation from these geodata.

Developer can create many maps with different content (layers, based on geodata from datasource) and define different styles. Map can be panned and zoomed, the current extent is stored in map context. Map can return rendered images to display to user in various graphic interfaces. Rendering is optimized for big amounts of geodata and uses non blocking (async) functions. Map spatial reference is Web Mercator (EPSG:3857).

Formats

Datasource supports limited input of GDAL vector and raster formats. Supported vector formats:

  • GeoJSON
  • ESRI Shape file
  • MapInfo Tab
  • KML

Supported raster formats (only in EPSG:3857):

  • GeoTIFF
  • Png
  • Jpeg

Supported online services:

  • WMS (EPSG:3857)
  • WFS

Supported tiled services

  • TMS (EPSG:3857, 3395)
  • MVT

Unit tests

Environment Status
Ubuntu trusty GCC Build Status
Ubuntu trusty Clang Build Status
Mac OS X Build Status
Android Build Status

Details link

NextGIS Web and My NextGIS integration

Library also supports NextGIS Web integration:

  • NGW instance access
  • supported resources listing
  • rendering or loading vector geodata (NGW Json, GeoJSON, MVT, WFS)
  • rendering or loading raster (WMS, TMS)
  • syncing vector geodata with NGW instance (history tables support)
  • sending tracking data

Details

During the upload to the internal database (geopackage) the vector geodata is projected into EPSG:3857 and generalized for several zoom levels (equivalent to 4, 8, 12 and 16). This is needed for fast drawing on all map scales. For raster data appropriate overviews generated as well.

The online data is cached for fast access in common place to use from different instances of library.

Usage

The library can be linked from desktop software or used via bindings. There are special support scripts for mobile platforms (Android and iOS). See /opt/ios folder.

For Android JNI used to access library functions in Kotlin. The special kotlin wrapper library is at separate repository.

For iOS special Python script build_framework.py to build XCode framework. Carthage support enabled. The special swift wrapper library is at separate repository.

License

The library code, CMake scripts and other files are distributed under the terms of GNU Lesser Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Commercial support

Need to fix a bug or add a feature to NextGIS Datastore? We provide custom development and support for this software. Contact us to discuss options!