pycartociudad contains Python functions to access the CartoCiudad REST and WPS API (REST y WPS) from IGN with spanish cartography services.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
To use the pycartociudad package you will need to have python installed (at least version 3.6). For detailed instructions, please check the Downloading Python guide
Dependencies can be managed through a pipenv wrapper. In order to install pipenv, check the pipenv installation documentation.
To install the latest published PyPI version of pycartociudad:
pip install pycartociudad
To upgrade an already installed pycartociudad
package from PyPI:
pip install --upgrade pycartociudad
The pycartociudad
development repository can be found in the pycartociudad GitHub repository. To make a local copy of the pycartociudad
repository, clone it or download is as a zip file.
To get a development env running, go to the downloaded or cloned pycartociudad
folder and install it using pipenv:
$ pipenv install --dev
Geocoding is the geolocation of addresses in Spain via Cartociudad API calls. Calling the geocode
function returns the details of the closest address in Spain to the indicated address:
import pycartociudad as pycc pycc.geocode('Plaza mayor 1, madrid')
Returns:
{ "id":"280790001063", "province":"Madrid", "comunidadAutonoma":"Comunidad de Madrid", "muni":"Madrid", "type":"portal", "address":"MAYOR", "postalCode":"28012", "poblacion":"Madrid", "geom":"POINT (-3.7066353973101624 40.41505683353346)", "tip_via":"PLAZA", "lat":40.41505683353346, "lng":-3.7066353973101624, "portalNumber":1, "stateMsg":"Resultado exacto de la búsqueda", "state":1, "countryCode":"011", "refCatastral":"None" }
Reverse geocoding is the search of an address details based on latitude and longitude coordinates:
import pycartociudad as pycc pycc.reverse_geocode(40.4472, -3.7076)
Returns:
{ "id":"280790165933", "province":"Madrid", "comunidadAutonoma":"Comunidad de Madrid", "muni":"Madrid", "type":"None", "address":"REINA VICTORIA", "postalCode":"28003", "poblacion":"Madrid", "geom":"POINT (-3.707649842620833 40.447247624136764)", "tip_via":"AVENIDA", "lat":40.447247624136764, "lng":-3.707649842620833, "portalNumber":22, "stateMsg":"Resultado exacto de la búsqueda", "state":1, "priority":0, "countryCode":"011", "refCatastral":"None" }
Reverse geocoding can be performed to look for cadastral details with the cadastral parameter:
pycc.reverse_geocode(40.4472476241486,-3.7076498426208833, cadastral=True)
Returns:
{ "id":"None", "province":"None", "comunidadAutonoma":"None", "muni":"None", "type":"None", "address":"0079609VK4707G", "postalCode":"None", "poblacion":"None", "geom":"POINT (-3.7076498426208833 40.4472476241486)", "tip_via":"None", "lat":40.4472476241486, "lng":-3.7076498426208833, "portalNumber":0, "stateMsg":"Resultado exacto de la búsqueda", "state":1, "priority":0, "countryCode":"011", "refCatastral":"AV REINA VICTORIA 22 MADRID (MADRID)" }
The get_location_info
function gets extra information of a location using official spanish web map services, such as cadastre, census or geocoding information:
import pycartociudad as pycc pycc.get_location_info(40.4472476241486,-3.7076498426208833)
Returns:
{ "cadastral_ref":"0079609VK4707G", "census_section":"2807906001", "district_code":"2807906", "id":"280790165933", "province":"Madrid", "comunidadAutonoma":"Comunidad de Madrid", "muni":"Madrid", "type":"None", "address":"REINA VICTORIA", "postalCode":"28003", "poblacion":"Madrid", "geom":"POINT (-3.707649842620833 40.447247624136764)", "tip_via":"AVENIDA", "lat":40.447247624136764, "lng":-3.707649842620833, "portalNumber":22, "stateMsg":"Resultado exacto de la búsqueda", "state":1, "priority":0, "countryCode":"011", "refCatastral":"None" }
This function gets the route between two points (encoded with their latitude-longitude coordinates), either walking or in a vehicle:
import pycartociudad as pycc d = pycc.route_between_two_points(40.447313139920475,-3.704361232340851,40.44204376380937,-3.699671450323607) for i in d['instructionsData']['instruction']: print(i['description'])
Prints:
Continúe por GLORIETA CUATRO CAMINOS Gire justo a la derecha por CALLE SANTA ENGRACIA Gire a la izquierda por CALLE RIOS ROSAS Objetivo logrado
To run a subset of tests:
$ python -m unittest tests.test_geocode $ python -m unittest tests.test_reverse_geocode
The pycartociudad
documentation can be found in pycartociudad readthedocs.
Details on the API implementation can be found in the official Cartociudad API specs.
Please read CONTRIBUTING.rst for the process of submitting pull requests to us.
For details on our code of conduct, check the PyLadies Code of Conduct.
- Luz Frías - Team Lead & Initial work - @koldLight.
- Isabel González - Initial work - @zupeiza.
- Beatriz Gómez - Initial work - @beatrizgoa.
- Alicia Pérez - Initial work - @aliciapj.
For a list of contributors, check the PyLadies pycartociudad contributor list
There are two licenses here:
- The data returned by this package is provided by IGN web services and implies the user's acceptance of a CC-BY 4.0 scne.es license. More info available in the IGN license specs.
- This package, responsible of querying IGN cartociudad API, is under a GPLv3 license. More information available in this repository LICENSE file.
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.