I wish to create a custom mobile application for Android and/or iOS for a school project that will allow a user to view (not edit, just view) specified ESRI shapefiles while offline.

Shapefiles at this link are an example of the source data I will need to use: http://www.fws.gov/southwest/es/AustinTexas/Maps_Data.html

What are good mechanisms for viewing Shapefile data offline on mobile devices? I would strongly prefer to use a format that is supported by free/open-source libs.

More specifically, is there FOSS library support for viewing the above example files directly on Android/iOS? Or do I need to convert the shapefiles to another format (I have heard of tiles, layers, geojson, database choices and so on) for viewing on mobile.

I would like to include these libraries in my own mobile app as I will be adding some features, i.e. not just view the files/data with another existing mobile app. I would also like to be able to include multiple shapefile sources as "layers" of a map in the app and ideally be able to interact with the layers as shapes. I.e. given a GPS point, I would like to find which polygons in included layers that point intersects. (Note: my question here is not really about how to do the point-in-polygon work, but rather to find a starting point for just viewing the Shapefiles in a mobile app that would enable later work)

Note: I am new to GIS so I am very new to the terminology and technology, but I have made a couple of android apps and some web apps so far.

  • 1
    If you're asking about formats, then you shouldn't be referring to "shapefile data". Shapefiles only exist in shapefile format. Geodata can exist in any format. Unfortunately, as with most "what is the best" questions, this question is only capable of generating opinions, not a single best answer (which is the goal of GIS SE). – Vince Aug 3 '15 at 12:18
  • Updated question to be more specific – fahrradler Aug 3 '15 at 13:33

SpatiaLite ,a spatial extension to SQLite is the best option for mobile applications.

| improve this answer | |
  • Thanks! Updated question to be more specific and give examples – fahrradler Aug 3 '15 at 13:33
  • Spatialite and the android version appear to be the most likely solution for interacting with ShapeFile data, offline, on an Android device: – fahrradler Aug 9 '15 at 22:39

I would go with GeoPackage another SQLite Container but it supports:

  • Raster Tiles - PNG, JPG, WebP
  • Terrain Tiles - raster image -PNG or TIF
  • Vector Features - Modified WKB in blob to store geometry
  • Vector Tiles - GZipped PBF

GeoPackage also supports having your data in whatever projection/coordinate system you want not like mbtiles which is assumed to be EPSG 3857 Google Spherical Web Mercator.

Shapefiles are not very good in mobile apps. If the mobile app works with the SHX Spatial Index or has another spatial index file then it's good. GeoPackage has an R Tree Spatial Index

| improve this answer | |

This is hard to answer without knowing more of your aims and the type of data you intend to view. But Shapefiles are well supported by FOSS due to their de facto standard status. It may be worth looking at the OGC GeoPackage standard which is the latest format to be described as the "new shapefile". It is supported by GDAL/OGR, QGis and GeoTools at least and probably other FOSS packages.

| improve this answer | |
  • Thanks! Updated question to be more specific and give examples – fahrradler Aug 3 '15 at 13:33

You can use NextGIS Mobile SDK or NextGIS mobile + NextGIS Formbuilder. NextGIS Mobile not supported ESRI Shapefile directly yet, but geojson. The exported format is geojson too. Internal store is SQLite (GeoPackage in NextGIS Mobile SDK v3). Formbuilder support ESRI Shape files and prepare data for loading into mobile application with beautiful forms. Useful links:

enter image description here

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.