Skip to content

viz.create_html() rounds lat/lng to 4 decimal places which drops accuracy to 11m #185

@aidanlister

Description

@aidanlister

This is the difference between this:

Screen Shot 2021-05-31 at 3 37 04 pm

And this:

Screen Shot 2021-05-31 at 3 38 20 pm

This is happening here:

geojson_data=json.dumps(self.data, ensure_ascii=False),

I'm attempting to solve this by passing in a decimal rather than a float when building my FeatureCollection:

    features.append(Feature(
        geometry=Point((Decimal(m['lng']), Decimal(m['lat']))),
    ))

You can monkey patch this like this:

import json
import decimal

class FullJSONEncoder(json.JSONEncoder):
    def default(self, o):
        if isinstance(o, decimal.Decimal):
            return str(o)
        return super().default(o)

default_props = {'cls': FullJSONEncoder, 'skipkeys': False, 'check_circular': False, 'allow_nan': False, 'indent': False, 'separators': None, 'default': None, 'sort_keys': False, 'ensure_ascii': False}
with patch.object(json.dumps, '__kwdefaults__', default_props):
    ...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions