ES:Marcos

Este artículo es una traducción incompleta de Frameworks: puede tener carencias, errores no corregidos o partes que todavía no han sido traducidas.
Si comprendes el artículo original en inglés, por favor, ayuda a completar esta traducción al español. Lee las instrucciones sobre cómo traducir este wiki.
Parece que nadie está trabajando en la traducción en este momento. Anímate y colabora en la tarea de traducción.

Libraries, also known as frameworks, components, modules, or software development kits (SDKs), contain reusable code that helps developers integrate OpenStreetMap into their websites or software applications without reinventing the wheel. Developers have written libraries for accessing and analyzing data, rendering maps, geocoding, and routing. These libraries are compatible with the Web and a wide variety of desktop and mobile platforms.

A library is primarily included in a larger application, rather than being run as a standalone tool. However, some of the libraries listed here also provide command-line tools to facilitate development. A standalone tool may be just as convenient as a library in some environments, particularly on the command line; see Software for a full listing.

The libraries listed here are actively maintained or are considered to be mature and complete. Libraries of historical interest can be found at Category:Discontinued software.

Accessing raw OpenStreetMap data

Artículo principal: Databases and data access APIs

OpenStreetMap has APIs for accessing raw, unprocessed map data. These low-level libraries are primarily used by OpenStreetMap editors, tile servers, and other infrastructure. If you’re developing a website or end-user application, most likely you’ll want to use a higher-level framework, such as an interactive map library.

LibraryPlatformsTarget languagesAPIXAPIOverpassLicenseNotes
osm-commonAndroid, JavaJavasínosíApache 2Overpass, changeset servers
osmapiAndroid, JavaJavasínonoLGPLv3Complete implementation of the API 0.6, including map data, traces, notes, changesets, user infos etc.
osmapiCross-platformPythonsínonoGPLv3
osmaRCross-platformRsínonoGPLv2
RosemaryCross-platformRubysínonoMIT
Services_OpenStreetMapCross-platformPHPsínonoBSDAlso allows access to user details. Went through PEAR PePr process

Processing OpenStreetMap data

Artículo principal: Converting map data between formats
Artículo principal: :Category:File Converters

These libraries parse or convert raw OpenStreetMap data into other file formats or import the data into databases.

LibraryPlatformsTarget languagesLicenseNotes
BasicOSMParserCross-platformJavaGPLv3A XML data parser to manipulate OSM objects in Java, also able to do CSV exports
GeowCross-platformScalaApache 2Lightweight framework for processing OSM data
GosmparseCross-platformGoMITParsing OpenStreetMap PBF files at speed
imposm.parserCross-platformPythonApache 2Process PBF and OSM XML files. Python <= 2.7 only, no longer updated.
LibOsmCross-platformC++GPLv3Store/update OSM datas in SQLlite database
LibOSMCross-platformJavaGPL
libosmscoutCross-platformC++, JavaLGPLraw data parsing and preprocessing, database functionality
osm-commonAndroid, JavaJavaApache 2osm.xml and osc.xml parsing and processing
Osm.mlCross-platformOCamlWTFPLParses the basic objects of a .osm file
osm-readNode.js, WebJavaScriptLGPLv3OpenStreetMap XML and PBF data parser for node.js and the browser
OSM2HiveCross-platformHiveApache 2OSM data importer for Hive / Hadoop clusters
osm4jCross-platformJavaLGPL
osm4scalaCross-platformScalaMITLightweight and high performance Scala library focus in parse PBF2 OSM files as iterators.
OSMemoryCross-platformJavaLGPLv3Library for validators with o5m fast reader. It loads data to memory that allow to use osm data without PostgreSQL
OsmiumCross-platformC++GPLv3toolkit and framework for working with OSM data
OSMKitiOS, macOSObjective-CMITParses and stores OSM data in a spatialite database.
OSMLibCross-platformRubyPublic domainosm to shapefile conversion
OSMonautCross-platformJavaMITParser for binary OSM files that always returns complete entities
OsmosisJava, AndroidJavaLGPLv3
Osm-parquetizer Cross-platform Java Apache 2 Converts PBF files to Parquet, making the OSM data BigData friendly (Hadoop/Spark)
osmpbfCross-platformC++LGPLv3based on iterator concept
osmpbfCross-platformGoMITPBF file format parser
OsmreadCross-platformPythonMITSimple library for reading XML and PBF data files
pbf2osmCross-platformCGPLv3converts pbf files back to osm based XML files
PyOsmium Cross-platform Python BSD 2-Clause Process PBF and OSM XML files. Toolkit and framework for working with OSM data.
SmrenderCross-platformCGPLv3modular OSM data processing

Generating map images

Artículo principal: Rendering

Most client-side static and interactive map libraries display static map images or raster tiles generated on the server side. These server-side libraries are used by tile servers that need to generate those raster tiles:

LibraryPlatformsTarget languagesLicenseNotes
KartographCross-platformPythonLGPLKartograph is a simple and lightweight framework for building interactive map applications without any other mapping service. It was created with the needs of designers and data journalists in mind.
MapnikWindows, macOS, LinuxPython, JavaScript, C++LGPLThe most popular server-side 2D map renderer. Requires PostgreSQL and various C++ libraries. Designed to be fast and is suitable for tile generation on high-end servers but it isn't particularly easy to set up.
MapSurfer.NETWindows, LinuxC#MITFramework for map styling and publishing (rendering, caching) geospatial data to the Web.
node-mapbox-gl-nativeNode.jsJavaScriptBSDRenders Mapbox Vector Tiles using OpenGL; supports overlays, GeoJSON, and Mapbox GL styles
pgmapcssCross-platformPostgreSQLAGPLv3a library for PostgreSQL/PostGIS which works between an osm2pgsql-based database and Mapnik (and maybe other renderers)
SmrenderCross-platformCGPLv3Offline paper chart rendering
TileManLinuxLuaGPLv3Framework for serving OSM based tiles

Displaying static map images

Artículo principal: Rendering

These client-side libraries fetch individual static map images from a tile server without adding an interactive UI around the images. In websites and applications, static map images are sometimes more appropriate than full map widgets, either due to performance concerns or because the map simply doesn’t need to be interactive.

LibraryPlatformsTarget languagesLicenseNotes
Mapbox Android ServicesAndroid, JavaJavaMITConnects to Mapbox’s Static API
Mapbox Python SDKCross-platformPythonMITConnects to Mapbox’s classic Static API
MapboxStatic.swiftiOS, macOS, tvOS, watchOSSwift, Objective-CBSDConnects to Mapbox’s Static API

Displaying interactive maps

Artículo principal: Rendering
Artículo principal: Deploying your own Slippy Map

Interactive maps, also known as slippy maps on the Web, are the most common way of integrating OpenStreetMap into a website or application. These client-side libraries can display OpenStreetMap-based maps directly. Most of them display raster or vector tiles generated by a tile server, while some render raw OpenStreetMap data fetched directly from an API. A number of server-side libraries make it easier to insert client-side map widgets in webpages.

LibraryPlatformsTarget languagesRasterVectorLicenseNotes
BruTileCross-platformSilverlight, C#sínoLGPL
CartagenWebJavaScriptnosíMITHTML5 Canvas/JavaScript-based renderer
Carto Mobile SDKAndroid, iOS, Windows PhoneJava, Objective-C++, Swift, C#sísíBSD
CartoTypeiOS, Android, Windows, Mac OS, UnixC++, .NET, Java, Objective C, Swift, C#nosíProprietary Offline or online map rendering using Open GL ES or CPU rendering; can use OSM and other data sources including ESRI shapefiles; provides routing, turn by turn navigation, geocoding, address search and full-text search.
COSMCtrlWindowsC++sínoFreewareMFC control
GLMapiOS, AndroidObjective-C, Swift, JavasísíProprietaryOffline or online vector map rendered on device using OpenGL ES
HalcyonFlashActionScriptsísíWTFPLRendering library developed by Richard Fairhurst and used within Potlatch 2
JMapViewerJava SEJavasínoGPLv2
JXMapViewer2Java SEJavasínoLGPLv3Swing control
KartographWebJavaScriptsínoLGPLKartograph is a simple and lightweight framework for building interactive map applications without any other mapping service. It was created with the needs of designers and data journalists in mind.
Kothic JSWebJavaScriptnosíBSDFull-featured JavaScript map rendering engine using HTML5 Canvas. It was initially developed as a JavaScript port of Kothic.
LeafletWebJavaScriptsínoBSD
libchamplainLinuxC, Perl, PythonsínoLGPLv2.1+Gnome/Gtk+ widget
libosmscoutCross-platformC++, JavasísíLGPLoffline vector map drawing (based on preprocessed data)
LocationMapViewerAndroidJavasínoGPLv3+Android-Intent; "geo:"-Uri; gpx and kml file/url
map::slippyCross-platformTclsínoBSD-styleTcl/Tk widget
Mapbox Android SDKAndroidJava, KotlinsísíBSDDisplays Mapbox Vector Tiles in an interactive map using OpenGL ES
Mapbox Cordova PluginiOS, AndroidJavaScriptsísíMITCordova plugin wrapping the Mapbox iOS SDK and Mapbox Android SDK
Mapbox GL JSWebJavaScriptsísíBSDDisplays Mapbox Vector Tiles in a slippy map using WebGL
Mapbox iOS SDKiOSObjective-C, Swift, Interface BuildersísíBSDDisplays Mapbox Vector Tiles in an interactive map using OpenGL ES
Mapbox macOS SDKmacOSObjective-C, Swift, Interface Builder, AppleScriptsísíBSDDisplays Mapbox Vector Tiles in an interactive map using OpenGL
Mapbox Qt SDKCross-platformC++, QMLsísíBSDDisplays Mapbox Vector Tiles in an interactive map using OpenGL and Qt
Mapbox SceneKit SDKiOSObjective-C, SwiftsísíISCProvides data for generating custom 3D scenes in SceneKit
Mapbox SDK for XamarinAndroid, iOSC#sísíBSDXamarin component wrapping the Mapbox Android SDK and Mapbox iOS SDK
Mapbox Unity SDKCross-platformC#sísíApacheProvides data for generating custom 3D scenes in Unity
mapsforgeAndroid, JavaJava?síLGPLv3OSM based replacement for Android's MapView class for offline tile sources and overlays. Java ME and Java SE.
MarbleWindows, macOS, LinuxC++, Python, QMLsísíLGPLQt widget
Modest MapsWebJavaScript, ActionScriptsínoBSD
NativeScript MapboxiOS, AndroidXML, JavaScriptsísíMITNativeScript plugin wrapping the Mapbox iOS SDK and Mapbox Android SDK
Navmii Mobile SDKiOS, Android??síProprietaryUnclear what is offered, documentation is unavailable without an account
OpenLayersWebJavaScriptsínoBSD-style
OpenScalesWeb, iOS, AndroidActionScriptsínoLGPLFlex framework
osm-gps-mapCross-platformC, Python, JavaScriptsínoGPLv2Gtk+ mapping widget drawing a GPS track, and points of interest on a moving map
osm2x3dWebJavaScriptnosíLGPLv3OSM 3D converter using native WebGL rendering (x3dom JS library)
OSMBonusPackAndroidJavasínoLGPL with exceptionsAddon for osmdroid: Markers, Bubbles, Routes, Directions, KML and more...
osmdroidAndroidJavasínoApache 2OSM based replacement for Android's MapView (v1 API) class. Supports online and offline tile sources and overlays for plotting icons, tracking location, drawing shapes.
OsmSharpiOS, Android, Windows PhoneC#nosíGPLv2 or commercialOffline vector map rendering
PolymapsWebJavaScriptsísíBSDWebmaps with Data overlays
QMapControlCross-platformC++sínoLGPLQt control
QtLocationCross-platformC++, QMLsísíLGPLv3 or commercialQt module for mapping, navigation, geocoding and places of interest with pluggable architecture to provide geoservices. Supersedes QtMobility.Location. OSM services for mapping, geocoding, routing and places now included by default.
Qt Mobility Geoservices ExtrasCross-platformC++, QMLsínoLGPLv2.1
QuartzMapsiOSObjective-CsísíProprietarySlippy Map and Vector Map rendering engine for iOS
React Native Mapbox GLiOS, AndroidJSXsísíBSDReact Native component wrapping the Mapbox iOS SDK and Mapbox Android SDK
SKMap BindingsiOSC#?síMITXamarin bindings for the Skobbler iOS SDK
Skobbler Android SDKAndroidJava?síProprietary
Skobbler iOS SDKiOSObjective-C, Swift?síProprietary
skobbler.jsWebJavaScriptsínoMIT
TangramWebJavaScriptnosíMIT2D and 3D map renderer using WebGL
Tangram ESAndroid, iOS, Linux, macOSC++nosíMIT2D and 3D map renderer using OpenGL ES
WhirlyGlobe-MaplyiOS, AndroidObjective-C, Swift, JavasísíApache 2Geospatial display kit for iOS and Android based on OpenGL ES. Implements a 2D map and a 3D globe and can handle image base maps and tiled vector maps based on OSM data.
Xamarin.Android.SkobblerAndroidC#?síMITXamarin bindings for the Skobbler Android SDK

Additionally, some client-side libraries can be used with OpenStreetMap tiles, even if they’re primarily intended for other uses:

Forward and reverse geocoding

Artículo principal: Search engines

This table includes both server-side libraries and client-side libraries:

LibraryPlatformsTarget languagesForwardReverseLicenseNotes
GisgraphyCross-platformJavasísíLGPLv3Geocoding/reverse geocoding, fulltextsearch, find nearby
mapsforgeAndroid, JavaJavasísíLGPLv3POI indexing and search. Java ME and Java SE.
osm-commonAndroid, JavaJavasísíApache 2Nominatim
Pelias Android SDKAndroidJavasísíApacheConnects to Mapzen’s Pelias Geocoder instance
Pelias iOS SDKiOS, macOSSwiftsísíApache 2Connects to Mapzen’s Pelias Geocoder instance
Services_OpenStreetMapCross-platformPHPsísíBSDIncludes partial support for querying Nominatim servers. Went through PEAR PePr process
osm-reverse-geocoderCross-platformPL/pgSQLnosíMITSimple address reverse geocoding
Artículo principal: Routing

This table includes both server-side libraries and client-side libraries:

LibraryPlatformsTarget languagesLicenseNotes
CartoTypeWindows, iOS, Android, macOS, UnixC++, .NET, Java, Objective-C, Swift, C#Proprietary offline routing for drivers, cyclists, walkers; configurable routing profiles; can export routes and instructions
GraphHopperCross-platformJava, Objective-C, SwiftApache 2Routing engine for car, bike and more. Can be used as web service, android library, iOS library or Java library.
libosmscoutCross-platformC++, JavaLGPLoffline routing (based on preprocessed data)
Mapbox Android ServicesAndroid, JavaJavaMITConnects to Mapbox’s Directions API for route data
Mapbox GL DirectionsWebJavaScriptMITPlugin for Mapbox GL JS that connects to Mapbox’s Directions API for route data
Mapbox JavaScript SDKWeb, Node.jsJavaScriptMITConnects to Mapbox’s Directions API for route data
Mapbox Navigation SDK for iOSiOSSwift, Objective-CISCEmbeds a turn-by-turn navigation UI with voice guidance into an iOS application
Mapbox Python SDKCross-platformPythonMITConnects to version 4 of Mapbox’s Directions API for route data
Mapbox Ruby SDKCross-platformRubyMITConnects to Mapbox’s Directions API for route data
Mapbox Unity SDKCross-platformC#ApacheConnects to Mapbox’s Directions API for route data
MapboxDirections.swiftiOS, macOS, tvOS, watchOSSwift, Objective-CISCConnects to Mapbox’s Directions API for route data
mapsforgeAndroid, JavaJavaLGPLv3Route planning and navigation. Java ME and Java SE.
Mapzen iOS SDKiOSSwift, Objective-CApacheConnects to Mapzen Turn-by-Turn (powered by Valhalla) via OnTheRoad for iOS
Navmii Mobile SDKiOS, Android?Proprietary
On The RoadAndroidJavaApacheConnects to Mapzen Turn-by-Turn (powered by Valhalla)
Open Source Routing MachineLinux, macOS, FreeBSD, Node.jsC++, JavaScriptBSDRouting
OSMNavigationCross-platformJavaGPL
OsmSharpiOS, Android, Windows PhoneC#GPLv2 or commercialOffline routing
pyroutelib2Cross-platformPythonGPLv3+Routing with custom vehicles and displaying the result
RoutinoLinux, macOS, WindowsCAGPLv3Flexible router with web interface and routing data analyser
Skobbler Android SDKAndroidJavaProprietary
Skobbler iOS SDKiOSObjective-C, SwiftProprietary

Code snippets

The following links provide source code that’s too small for a library but nevertheless useful:

See also:

  • Category:Unix command examples
  • Category:Python,Category:Perl, Category:Java

Other developer tools

Artículo principal: GIS software

General-purpose GIS libraries are often used in conjunction with OpenStreetMap-specific libraries to work with geographic data:

  • PROJ.4 - Geo Projection Conversion lib with multiple bindings
  • GDAL - Geo Raster image formats lib
  • OGR - Geo Vector data formats lib
  • PostGIS - The leading Geo enabled Database
  • spatialite - sqlite extension, fully fledged spatial db
  • Mapbender - Another more GIS focused web map lib
  • Geotools -Java GIS Toolkit
  • GIS-Python lab - Python GIS Toolkit
  • k3b-geoHelper - java lib to parse gpx and kml files and en/decode geo-uris. Works with Android, too
  • Pic4Carto.js - JavaScript library for open-licensed street pictures retrieval (which can be used for photo mapping, tutorial)
This article is issued from Openstreetmap. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.