Skip to content

Commit

Permalink
#36 round the z-value up to significant digits as specified in the pa…
Browse files Browse the repository at this point in the history
…rameters
  • Loading branch information
roelderickx committed Sep 10, 2023
1 parent 3507a70 commit a4b4c7f
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
1 change: 1 addition & 0 deletions README.md
Expand Up @@ -199,6 +199,7 @@ datasource.set_query(query)
osmdata = ogr2osm.OsmData(translation_object)
# Optional constructor parameters:
# - rounding_digits: --rounding-digits parameter
# - significant_digits: --significant-digits parameter
# - max_points_in_way: --split-ways parameter
# - add_bounds: --add-bounds parameter
# - start_id: --id parameter
Expand Down
13 changes: 8 additions & 5 deletions ogr2osm/osm_data.py
Expand Up @@ -17,13 +17,15 @@
from .osm_geometries import OsmId, OsmBoundary, OsmNode, OsmWay, OsmRelation

class OsmData:
def __init__(self, translation, rounding_digits=7, max_points_in_way=1800, add_bounds=False, \
start_id=0, is_positive=False, z_value_tagname=None):
def __init__(self, translation, rounding_digits=7, significant_digits=9, \
max_points_in_way=1800, add_bounds=False, start_id=0, is_positive=False, \
z_value_tagname=None):
self.logger = logging.getLogger(__program__)

# options
self.translation = translation
self.rounding_digits = rounding_digits
self.significant_digits = significant_digits
self.max_points_in_way = max_points_in_way
self.add_bounds = add_bounds
self.z_value_tagname = z_value_tagname
Expand Down Expand Up @@ -87,7 +89,6 @@ def __round_number(self, n):
def __add_node(self, x, y, z, tags, is_way_member):
rx = self.__round_number(x)
ry = self.__round_number(y)
rz = self.__round_number(z)

# TODO deprecated
unique_node_id = None
Expand All @@ -104,7 +105,8 @@ def __add_node(self, x, y, z, tags, is_way_member):
duplicate_node = self.__nodes[index]
merged_tags = self.translation.merge_tags('node', duplicate_node.tags, tags)
if self.z_value_tagname:
new_tags = { self.z_value_tagname: str(rz) }
strz = (('%%.%df' % self.significant_digits) % z).strip('0')
new_tags = { self.z_value_tagname: strz }
merged_tags = self.translation.merge_tags('node', merged_tags, new_tags)
if merged_tags is not None:
duplicate_node.tags = merged_tags
Expand All @@ -117,7 +119,8 @@ def __add_node(self, x, y, z, tags, is_way_member):
else:
merged_tags = tags
if self.z_value_tagname:
new_tags = { self.z_value_tagname: [ str(rz) ] }
strz = (('%%.%df' % self.significant_digits) % z).strip('0')
new_tags = { self.z_value_tagname: [ strz ] }
merged_tags = self.translation.merge_tags('node', new_tags, tags)
node = OsmNode(x, y, merged_tags)
self.__unique_node_index[unique_node_id] = [ len(self.__nodes) ]
Expand Down

0 comments on commit a4b4c7f

Please sign in to comment.