Esempio n. 1
0
def admin_check_extents(request):
    """
    This view allows administrators to visualize data and configured extents.

    Since it's the first, we implemented this in a very rough way. If there is
    to be more admin tools like this one. Move this to a separate Django app and
    style HTML properly.
    """
    path_extent_native = sql_extent("SELECT ST_Extent(geom) FROM core_path;")
    path_extent = api_bbox(path_extent_native)
    dem_extent_native = sql_extent(
        "SELECT ST_Extent(rast::geometry) FROM altimetry_dem;")
    dem_extent = api_bbox(dem_extent_native)
    tiles_extent_native = settings.SPATIAL_EXTENT
    tiles_extent = api_bbox(tiles_extent_native)
    viewport_native = settings.LEAFLET_CONFIG['SPATIAL_EXTENT']
    viewport = api_bbox(viewport_native, srid=settings.API_SRID)

    def leafletbounds(bbox):
        return [[bbox[1], bbox[0]], [bbox[3], bbox[2]]]

    context = dict(
        path_extent=leafletbounds(path_extent),
        path_extent_native=path_extent_native,
        dem_extent=leafletbounds(dem_extent) if dem_extent else None,
        dem_extent_native=dem_extent_native,
        tiles_extent=leafletbounds(tiles_extent),
        tiles_extent_native=tiles_extent_native,
        viewport=leafletbounds(viewport),
        viewport_native=viewport_native,
        SRID=settings.SRID,
        API_SRID=settings.API_SRID,
    )
    return render(request, 'common/check_extents.html', context)
Esempio n. 2
0
 def test_api_bbox(self):
     bbox = api_bbox(self.bbox, srid=2154, buffer=0.5)
     self.assertEqual(bbox, (-3.541720187208087, -7.128188339796316,
                             8.85446791766016, 5.0971257963327625))
     bbox_no_buffer = api_bbox(self.bbox, srid=2154, buffer=0.0)
     self.assertEqual(bbox_no_buffer,
                      (-0.4442674114234903, -4.028058663629689,
                       5.756043049259614, 1.9970003967648557))
Esempio n. 3
0
 def test_api_bbox(self):
     bbox = api_bbox(self.bbox, srid=2154, buffer=0.5)
     self.assertAlmostEqual(bbox[0], -3.54172018720)
     self.assertAlmostEqual(bbox[1], -7.12818833979)
     self.assertAlmostEqual(bbox[2], 8.85446791766)
     self.assertAlmostEqual(bbox[3], 5.09712579633)
     bbox_no_buffer = api_bbox(self.bbox, srid=2154, buffer=0.0)
     self.assertAlmostEqual(bbox_no_buffer[0], -0.44426741142)
     self.assertAlmostEqual(bbox_no_buffer[1], -4.02805866362)
     self.assertAlmostEqual(bbox_no_buffer[2], 5.75604304925)
     self.assertAlmostEqual(bbox_no_buffer[3], 1.99700039676)
Esempio n. 4
0
def admin_check_extents(request):
    """
    This view allows administrators to visualize data and configured extents.

    Since it's the first, we implemented this in a very rough way. If there is
    to be more admin tools like this one. Move this to a separate Django app and
    style HTML properly.
    """
    path_extent_native = sql_extent("SELECT ST_Extent(geom) FROM l_t_troncon;")
    path_extent = api_bbox(path_extent_native)
    try:
        dem_extent_native = sql_extent(
            "SELECT ST_Extent(rast::geometry) FROM mnt;")
        dem_extent = api_bbox(dem_extent_native)
    except DatabaseError:  # mnt table missing
        dem_extent_native = None
        dem_extent = None
    tiles_extent_native = settings.SPATIAL_EXTENT
    tiles_extent = api_bbox(tiles_extent_native)
    viewport_native = settings.LEAFLET_CONFIG['SPATIAL_EXTENT']
    viewport = api_bbox(viewport_native, srid=settings.API_SRID)

    def leafletbounds(bbox):
        return [[bbox[1], bbox[0]], [bbox[3], bbox[2]]]

    context = dict(
        path_extent=leafletbounds(path_extent),
        path_extent_native=path_extent_native,
        dem_extent=leafletbounds(dem_extent) if dem_extent else None,
        dem_extent_native=dem_extent_native,
        tiles_extent=leafletbounds(tiles_extent),
        tiles_extent_native=tiles_extent_native,
        viewport=leafletbounds(viewport),
        viewport_native=viewport_native,
        SRID=settings.SRID,
        API_SRID=settings.API_SRID,
    )
    return render(request, 'common/check_extents.html', context)
Esempio n. 5
0
    if not hasattr(check_srid_has_meter_unit, '_checked'):
        cursor = connection.cursor()
        cursor.execute(
            """
            SELECT * FROM spatial_ref_sys
            WHERE srtext ILIKE '%%meter%%' AND srid=%s;""", [settings.SRID])
        results = cursor.fetchall()
        if len(results) == 0:
            err_msg = 'Unit of SRID EPSG:%s is not meter.' % settings.SRID
            raise ImproperlyConfigured(err_msg)
    check_srid_has_meter_unit._checked = True


if settings.TEST and not settings.SOUTH_TESTS_MIGRATE:
    pre_syncdb.connect(check_srid_has_meter_unit,
                       dispatch_uid="geotrek.core.checksrid")
    post_syncdb.connect(run_initial_sql_post_syncdb,
                        dispatch_uid="geotrek.core.sqlautoload")
    # During tests, the signal is received twice unfortunately
    # https://code.djangoproject.com/ticket/17977
else:
    pre_migrate.connect(check_srid_has_meter_unit,
                        dispatch_uid="geotrek.core.checksrid")
    post_migrate.connect(run_initial_sql_post_migrate,
                         dispatch_uid="geotrek.core.sqlautoload")
"""
    Computed client-side setting.
"""
settings.LEAFLET_CONFIG['SPATIAL_EXTENT'] = api_bbox(
    settings.SPATIAL_EXTENT, buffer=settings.VIEWPORT_MARGIN)
Esempio n. 6
0
    if not hasattr(check_srid_has_meter_unit, '_checked'):
        cursor = connection.cursor()
        cursor.execute(
            """
            SELECT * FROM spatial_ref_sys
            WHERE srtext ILIKE '%%meter%%' AND srid=%s;""", [settings.SRID])
        results = cursor.fetchall()
        if len(results) == 0:
            err_msg = 'Unit of SRID EPSG:%s is not meter.' % settings.SRID
            raise ImproperlyConfigured(err_msg)
    check_srid_has_meter_unit._checked = True


if settings.TEST and not settings.SOUTH_TESTS_MIGRATE:
    pre_syncdb.connect(check_srid_has_meter_unit,
                       dispatch_uid="geotrek.core.checksrid")
    post_syncdb.connect(run_initial_sql_post_syncdb,
                        dispatch_uid="geotrek.core.sqlautoload")
    # During tests, the signal is received twice unfortunately
    # https://code.djangoproject.com/ticket/17977
else:
    pre_migrate.connect(check_srid_has_meter_unit,
                        dispatch_uid="geotrek.core.checksrid")
    post_migrate.connect(run_initial_sql_post_migrate,
                         dispatch_uid="geotrek.core.sqlautoload")
"""
    Computed client-side setting.
"""
settings.LEAFLET_CONFIG['SPATIAL_EXTENT'] = api_bbox(settings.SPATIAL_EXTENT,
                                                     buffer=0.5)
Esempio n. 7
0
    load_sql_files(app_label)


def check_srid_has_meter_unit(sender, **kwargs):
    if not hasattr(check_srid_has_meter_unit, '_checked'):
        cursor = connection.cursor()
        cursor.execute("""
            SELECT * FROM spatial_ref_sys
            WHERE srtext ILIKE '%%meter%%' AND srid=%s;""", [settings.SRID])
        results = cursor.fetchall()
        if len(results) == 0:
            err_msg = 'Unit of SRID EPSG:%s is not meter.' % settings.SRID
            raise ImproperlyConfigured(err_msg)
    check_srid_has_meter_unit._checked = True


if settings.TEST and not settings.SOUTH_TESTS_MIGRATE:
    pre_syncdb.connect(check_srid_has_meter_unit, dispatch_uid="geotrek.core.checksrid")
    post_syncdb.connect(run_initial_sql_post_syncdb, dispatch_uid="geotrek.core.sqlautoload")
    # During tests, the signal is received twice unfortunately
    # https://code.djangoproject.com/ticket/17977
else:
    pre_migrate.connect(check_srid_has_meter_unit, dispatch_uid="geotrek.core.checksrid")
    post_migrate.connect(run_initial_sql_post_migrate, dispatch_uid="geotrek.core.sqlautoload")


"""
    Computed client-side setting.
"""
settings.LEAFLET_CONFIG['SPATIAL_EXTENT'] = api_bbox(settings.SPATIAL_EXTENT, buffer=0.5)