Added SpatialFeatures.unsupported_geojson_options.

This commit is contained in:
Tim Graham 2020-11-11 01:39:15 -05:00 committed by GitHub
parent f90fcc222b
commit c9e8544321
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 8 additions and 4 deletions

View File

@ -51,6 +51,9 @@ class BaseSpatialFeatures:
# Can SchemaEditor alter geometry fields? # Can SchemaEditor alter geometry fields?
can_alter_geometry_field = True can_alter_geometry_field = True
# Set of options that AsGeoJSON() doesn't support.
unsupported_geojson_options = {}
@property @property
def supports_bbcontains_lookup(self): def supports_bbcontains_lookup(self):
return 'bbcontains' in self.connection.ops.gis_operators return 'bbcontains' in self.connection.ops.gis_operators

View File

@ -14,6 +14,7 @@ class DatabaseFeatures(BaseSpatialFeatures, MySQLDatabaseFeatures):
supports_transform = False supports_transform = False
supports_null_geometries = False supports_null_geometries = False
supports_num_points_poly = False supports_num_points_poly = False
unsupported_geojson_options = {'crs'}
@cached_property @cached_property
def supports_empty_geometry_collection(self): def supports_empty_geometry_collection(self):

View File

@ -10,3 +10,4 @@ class DatabaseFeatures(BaseSpatialFeatures, OracleDatabaseFeatures):
supports_geometry_field_unique_index = False supports_geometry_field_unique_index = False
supports_perimeter_geodetic = True supports_perimeter_geodetic = True
supports_dwithin_distance_expr = False supports_dwithin_distance_expr = False
unsupported_geojson_options = {'bbox', 'crs', 'precision'}

View File

@ -44,14 +44,13 @@ class GISFunctionsTests(FuncTestMixin, TestCase):
'{"type":"Point","crs":{"type":"name","properties":{"name":"EPSG:4326"}},' '{"type":"Point","crs":{"type":"name","properties":{"name":"EPSG:4326"}},'
'"bbox":[-87.65018,41.85039,-87.65018,41.85039],"coordinates":[-87.65018,41.85039]}' '"bbox":[-87.65018,41.85039,-87.65018,41.85039],"coordinates":[-87.65018,41.85039]}'
) )
# MySQL and Oracle ignore the crs option. if 'crs' in connection.features.unsupported_geojson_options:
if mysql or oracle:
del houston_json['crs'] del houston_json['crs']
del chicago_json['crs'] del chicago_json['crs']
# Oracle ignores also the bbox and precision options. if 'bbox' in connection.features.unsupported_geojson_options:
if oracle:
del chicago_json['bbox'] del chicago_json['bbox']
del victoria_json['bbox'] del victoria_json['bbox']
if 'precision' in connection.features.unsupported_geojson_options:
chicago_json['coordinates'] = [-87.650175, 41.850385] chicago_json['coordinates'] = [-87.650175, 41.850385]
# Precision argument should only be an integer # Precision argument should only be an integer