Skip to content

Commit

Permalink
Merge pull request #46 from candrsn/master
Browse files Browse the repository at this point in the history
Changes to improve the use of the module for retrieving Polygons
  • Loading branch information
iandees authored Mar 9, 2018
2 parents 1a02509 + 256fc7e commit ee8e407
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 8 deletions.
2 changes: 1 addition & 1 deletion .bumpversion.cfg
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[bumpversion]
current_version = 1.7.0
current_version = 1.7.1
commit = True
tag = True

Expand Down
16 changes: 10 additions & 6 deletions esridump/dumper.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ class EsriDumper(object):
def __init__(self, url, parent_logger=None,
extra_query_args=None, extra_headers=None,
timeout=None, fields=None, request_geometry=True,
outSR=None, proxy=None):
outSR=None, proxy=None,
start_with=None, geometry_precision=None):
self._layer_url = url
self._query_params = extra_query_args or {}
self._headers = extra_headers or {}
Expand All @@ -20,6 +21,8 @@ def __init__(self, url, parent_logger=None,
self._outSR = outSR or '4326'
self._request_geometry = request_geometry
self._proxy = proxy or None
self._startWith = start_with or 0
self._precision = geometry_precision or 7

if parent_logger:
self._logger = parent_logger.getChild('esridump')
Expand Down Expand Up @@ -154,7 +157,7 @@ def _find_oid_field_name(self, metadata):
oid_field_name = metadata.get('objectIdField')
if not oid_field_name:
for f in metadata['fields']:
if f['type'] == 'esriFieldTypeOID':
if f.get('type') == 'esriFieldTypeOID':
oid_field_name = f['name']
break

Expand Down Expand Up @@ -311,12 +314,12 @@ def __iter__(self):
self._logger.info("Source does not support pagination with fields specified, so querying for all fields.")
query_fields = None

for offset in range(0, row_count, page_size):
for offset in range(self._startWith, row_count, page_size):
query_args = self._build_query_args({
'resultOffset': offset,
'resultRecordCount': page_size,
'where': '1=1',
'geometryPrecision': 7,
'geometryPrecision': self._precision,
'returnGeometry': self._request_geometry,
'outSR': self._outSR,
'outFields': ','.join(query_fields or ['*']),
Expand All @@ -329,6 +332,7 @@ def __iter__(self):

use_oids = True
oid_field_name = self._find_oid_field_name(metadata)

if not oid_field_name:
raise EsriDownloadError("Could not find object ID field name for deduplication")

Expand All @@ -347,7 +351,7 @@ def __iter__(self):
oid_field_name,
page_max,
),
'geometryPrecision': 7,
'geometryPrecision': self._precision,
'returnGeometry': self._request_geometry,
'outSR': self._outSR,
'outFields': ','.join(query_fields or ['*']),
Expand Down Expand Up @@ -381,7 +385,7 @@ def __iter__(self):
oid_field_name,
page_max,
),
'geometryPrecision': 7,
'geometryPrecision': self._precision,
'returnGeometry': self._request_geometry,
'outSR': self._outSR,
'outFields': ','.join(query_fields or ['*']),
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

setup(
name='esridump',
version='1.7.0',
version='1.7.1',
description='Dump geodata from ESRI endpoints to GeoJSON',
long_description=readme,
author='Ian Dees',
Expand Down

0 comments on commit ee8e407

Please sign in to comment.