Compare commits
12 Commits
python-0.1
...
python-0.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
462773a138 | ||
|
|
fad2f25183 | ||
|
|
2f54ef7e4e | ||
|
|
ab4d77edf2 | ||
|
|
0b12f26f47 | ||
|
|
a116aba660 | ||
|
|
29d5a332b6 | ||
|
|
b2825f46a4 | ||
|
|
a791d02dcc | ||
|
|
e2612645c3 | ||
|
|
c5fed2cc80 | ||
|
|
a1f339376e |
7
NEWS.md
7
NEWS.md
@@ -1,3 +1,10 @@
|
|||||||
|
February 5th, 2018
|
||||||
|
==================
|
||||||
|
* Version `0.16.5` of the python library
|
||||||
|
* Fix displaced routing shape #443
|
||||||
|
* Check for empty coordinates object before converting it to polygon
|
||||||
|
* 422 errors that come from Mapbox now returns an empty result because is a bad input from the user data
|
||||||
|
|
||||||
February 2th, 2018
|
February 2th, 2018
|
||||||
==================
|
==================
|
||||||
* Version `0.16.4` of the python library
|
* Version `0.16.4` of the python library
|
||||||
|
|||||||
16
README.md
16
README.md
@@ -45,7 +45,7 @@ Steps to deploy a new Data Services API version :
|
|||||||
|
|
||||||
```sql
|
```sql
|
||||||
CREATE DATABASE dataservices_db ENCODING = 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8';
|
CREATE DATABASE dataservices_db ENCODING = 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8';
|
||||||
CREATE USER dataservices_user;
|
CREATE USER geocoder_api;
|
||||||
```
|
```
|
||||||
|
|
||||||
- Install needed extensions in `dataservices_db` database
|
- Install needed extensions in `dataservices_db` database
|
||||||
@@ -90,19 +90,23 @@ Steps to deploy a new Data Services API version :
|
|||||||
```
|
```
|
||||||
psql -U postgres -d dataservices_db -f src/pg/test/fixtures/load_fixtures.sql
|
psql -U postgres -d dataservices_db -f src/pg/test/fixtures/load_fixtures.sql
|
||||||
```
|
```
|
||||||
- Give permission to execute and select to the `dataservices_user` user:
|
- Give permission to execute and select to the `geocoder_api` user:
|
||||||
```
|
```
|
||||||
psql -U postgres -d dataservices_db -c "BEGIN;CREATE EXTENSION IF NOT EXISTS observatory VERSION 'dev'; COMMIT" -e
|
psql -U postgres -d dataservices_db -c "BEGIN;CREATE EXTENSION IF NOT EXISTS observatory VERSION 'dev'; COMMIT" -e
|
||||||
psql -U postgres -d dataservices_db -c "BEGIN;GRANT SELECT ON ALL TABLES IN SCHEMA cdb_observatory TO dataservices_user; COMMIT" -e
|
psql -U postgres -d dataservices_db -c "BEGIN;GRANT SELECT ON ALL TABLES IN SCHEMA cdb_observatory TO geocoder_api; COMMIT" -e
|
||||||
psql -U postgres -d dataservices_db -c "BEGIN;GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA cdb_observatory TO dataservices_user; COMMIT" -e
|
psql -U postgres -d dataservices_db -c "BEGIN;GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA cdb_observatory TO geocoder_api; COMMIT" -e
|
||||||
psql -U postgres -d dataservices_db -c "BEGIN;GRANT SELECT ON ALL TABLES IN SCHEMA observatory TO dataservices_user; COMMIT" -e
|
psql -U postgres -d dataservices_db -c "BEGIN;GRANT USAGE ON SCHEMA cdb_observatory TO geocoder_api; COMMIT" -e
|
||||||
psql -U postgres -d dataservices_db -c "BEGIN;GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA observatory TO dataservices_user; COMMIT" -e
|
psql -U postgres -d dataservices_db -c "BEGIN;GRANT SELECT ON ALL TABLES IN SCHEMA observatory TO geocoder_api; COMMIT" -e
|
||||||
|
psql -U postgres -d dataservices_db -c "BEGIN;GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA observatory TO geocoder_api; COMMIT" -e
|
||||||
|
psql -U postgres -d dataservices_db -c "BEGIN;GRANT USAGE ON SCHEMA observatory TO geocoder_api; COMMIT" -e
|
||||||
```
|
```
|
||||||
|
|
||||||
### Server configuration
|
### Server configuration
|
||||||
|
|
||||||
Configuration for the different services must be stored in the server database using `CDB_Conf_SetConf()`.
|
Configuration for the different services must be stored in the server database using `CDB_Conf_SetConf()`.
|
||||||
|
|
||||||
|
**All the configuration inside brackets [] is optional**
|
||||||
|
|
||||||
#### Redis configuration
|
#### Redis configuration
|
||||||
|
|
||||||
If sentinel is used:
|
If sentinel is used:
|
||||||
|
|||||||
@@ -80,6 +80,8 @@ class MapboxGeocoder(Traceable):
|
|||||||
return self._parse_geocoder_response(response.text)
|
return self._parse_geocoder_response(response.text)
|
||||||
elif response.status_code == requests.codes.bad_request:
|
elif response.status_code == requests.codes.bad_request:
|
||||||
return []
|
return []
|
||||||
|
elif response.status_code == requests.codes.unprocessable_entity:
|
||||||
|
return []
|
||||||
else:
|
else:
|
||||||
raise ServiceException(response.status_code, response)
|
raise ServiceException(response.status_code, response)
|
||||||
except requests.Timeout as te:
|
except requests.Timeout as te:
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ class MapboxIsolines():
|
|||||||
response = self._matrix_client.matrix([origin] + targets,
|
response = self._matrix_client.matrix([origin] + targets,
|
||||||
profile)
|
profile)
|
||||||
json_response = json.loads(response)
|
json_response = json.loads(response)
|
||||||
|
if not json_response:
|
||||||
|
return []
|
||||||
|
|
||||||
costs = [None] * number_of_angles
|
costs = [None] * number_of_angles
|
||||||
|
|
||||||
@@ -125,6 +127,9 @@ class MapboxIsolines():
|
|||||||
unit_factor=unit_factor,
|
unit_factor=unit_factor,
|
||||||
number_of_angles=number_of_angles)
|
number_of_angles=number_of_angles)
|
||||||
|
|
||||||
|
if not costs:
|
||||||
|
continue
|
||||||
|
|
||||||
errors = [(cost - isorange) / float(isorange) for cost in costs]
|
errors = [(cost - isorange) / float(isorange) for cost in costs]
|
||||||
max_abs_error = max([abs(e) for e in errors])
|
max_abs_error = max([abs(e) for e in errors])
|
||||||
if max_abs_error <= tolerance:
|
if max_abs_error <= tolerance:
|
||||||
|
|||||||
@@ -72,6 +72,8 @@ class MapboxMatrixClient(Traceable):
|
|||||||
return response.text
|
return response.text
|
||||||
elif response.status_code == requests.codes.bad_request:
|
elif response.status_code == requests.codes.bad_request:
|
||||||
return '{}'
|
return '{}'
|
||||||
|
elif response.status_code == requests.codes.unprocessable_entity:
|
||||||
|
return '{}'
|
||||||
else:
|
else:
|
||||||
raise ServiceException(response.status_code, response)
|
raise ServiceException(response.status_code, response)
|
||||||
except requests.Timeout as te:
|
except requests.Timeout as te:
|
||||||
|
|||||||
@@ -91,6 +91,8 @@ class MapboxRouting(Traceable):
|
|||||||
return self._parse_routing_response(response.text)
|
return self._parse_routing_response(response.text)
|
||||||
elif response.status_code == requests.codes.bad_request:
|
elif response.status_code == requests.codes.bad_request:
|
||||||
return MapboxRoutingResponse(None, None, None)
|
return MapboxRoutingResponse(None, None, None)
|
||||||
|
elif response.status_code == requests.codes.unprocessable_entity:
|
||||||
|
return MapboxRoutingResponse(None, None, None)
|
||||||
else:
|
else:
|
||||||
raise ServiceException(response.status_code, response)
|
raise ServiceException(response.status_code, response)
|
||||||
except requests.Timeout as te:
|
except requests.Timeout as te:
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ def marshall_coordinates(coordinates):
|
|||||||
|
|
||||||
def coordinates_to_polygon(coordinates):
|
def coordinates_to_polygon(coordinates):
|
||||||
"""Convert a Coordinate array coordinates to a PostGIS polygon"""
|
"""Convert a Coordinate array coordinates to a PostGIS polygon"""
|
||||||
|
if not coordinates:
|
||||||
|
return None
|
||||||
coordinates.append(coordinates[0]) # Close the ring
|
coordinates.append(coordinates[0]) # Close the ring
|
||||||
result_coordinates = []
|
result_coordinates = []
|
||||||
for coordinate in coordinates:
|
for coordinate in coordinates:
|
||||||
|
|||||||
@@ -51,9 +51,7 @@ def polyline_to_linestring(polyline):
|
|||||||
"""Convert a Mapzen polyline shape to a PostGIS linestring"""
|
"""Convert a Mapzen polyline shape to a PostGIS linestring"""
|
||||||
coordinates = []
|
coordinates = []
|
||||||
for point in polyline:
|
for point in polyline:
|
||||||
# Divide by 10 because mapzen uses one more decimal than the
|
coordinates.append("%s %s" % (point[1], point[0]))
|
||||||
# google standard (https://mapzen.com/documentation/turn-by-turn/decoding/)
|
|
||||||
coordinates.append("%s %s" % (point[1]/10, point[0]/10))
|
|
||||||
wkt_coordinates = ','.join(coordinates)
|
wkt_coordinates = ','.join(coordinates)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ from setuptools import setup, find_packages
|
|||||||
setup(
|
setup(
|
||||||
name='cartodb_services',
|
name='cartodb_services',
|
||||||
|
|
||||||
version='0.16.4',
|
version='0.16.5',
|
||||||
|
|
||||||
description='CartoDB Services API Python Library',
|
description='CartoDB Services API Python Library',
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user