# 349 LANIS link improvements

* replaces 'dumb' link template with LANIS mapinterface support
* adds fallback default LANIS link
This commit is contained in:
2023-10-25 10:04:56 +02:00
parent ffae18ebc4
commit 274d7b8b6f
9 changed files with 105 additions and 32 deletions

View File

@@ -12,7 +12,7 @@ from abc import abstractmethod
from django.contrib import messages
from django.db.models import QuerySet
from konova.sub_settings.lanis_settings import DEFAULT_SRID_RLP, LANIS_ZOOM_LUT, LANIS_LINK_TEMPLATE
from konova.sub_settings.lanis_settings import LANIS_LINK_TEMPLATE, LANIS_LINK_DEFAULT
from konova.tasks import celery_send_mail_shared_access_removed, celery_send_mail_shared_access_given, \
celery_send_mail_shared_data_recorded, celery_send_mail_shared_data_unrecorded, \
celery_send_mail_shared_data_deleted, celery_send_mail_shared_data_checked, \
@@ -706,32 +706,23 @@ class GeoReferencedMixin(models.Model):
return request
def get_LANIS_link(self) -> str:
""" Generates a link for LANIS depending on the geometry
""" Creates the link for 'LANIS' button on detail view of an entry.
Returns:
"""
try:
geom = self.geometry.geom.transform(DEFAULT_SRID_RLP, clone=True)
x = geom.centroid.x
y = geom.centroid.y
area = int(geom.envelope.area)
z_l = 16
for k_area, v_zoom in LANIS_ZOOM_LUT.items():
if k_area < area:
z_l = v_zoom
break
zoom_lvl = z_l
except (AttributeError, IndexError) as e:
# If no geometry has been added, yet.
x = 1
y = 1
zoom_lvl = 6
return LANIS_LINK_TEMPLATE.format(
zoom_lvl,
x,
y,
)
entry_has_geometry = not self.geometry.geom.empty
if entry_has_geometry:
link = LANIS_LINK_TEMPLATE.format(
self.get_lanis_layer_name(),
self.identifier
)
else:
link = LANIS_LINK_DEFAULT
return link
def get_lanis_layer_name(self):
raise NotImplementedError("Must be implemented in subclasses!")
class ResubmitableObjectMixin(models.Model):

View File

@@ -15,7 +15,8 @@ DEFAULT_SRID_RLP = 25832
# Needed to redirect to LANIS
## Values to be inserted are [zoom_level, x_coord, y_coord]
LANIS_LINK_TEMPLATE = "https://geodaten.naturschutz.rlp.de/kartendienste_naturschutz/index.php?lang=de&zl={}&x={}&y={}&bl=tk_rlp_tms_grau&bo=1&lo=0.8,0.8,0.8,0.6,0.8,0.8,0.8,0.8,0.8&layers=eiv_recorded,eiv_unrecorded,eiv_unrecorded_old_entries,kom_recorded,kom_unrecorded,kom_unrecorded_old_entries,oek_recorded,oek_unrecorded,ema_recorded,ema_unrecorded,mae&service=kartendienste_naturschutz"
LANIS_LINK_DEFAULT = "https://geodaten.naturschutz.rlp.de/kartendienste_naturschutz/index.php?lang=de&zl=7&x=378800&y=5535500&bl=tk_rlp_tms_grau&bo=1&lo=1,0.7,0.7,0.5,0.7,0.7,0.5,0.7,0.7,0.8,0.7,0.7&layers=grenzen_land,eiv_recorded,eiv_unrecorded,eiv_unrecorded_old_entries,kom_recorded,kom_unrecorded,kom_unrecorded_old_entries,ema_recorded,ema_unrecorded,mae,oek_recorded,oek_unrecorded&service=kartendienste_naturschutz"
LANIS_LINK_TEMPLATE = "https://geodaten.naturschutz.rlp.de/kartendienste_naturschutz/mapinterface.php?qlayer={}&qfield=identifier&qidtyp=text&qid={}&client=&layers=eiv_recorded,eiv_unrecorded,eiv_unrecorded_old_entries,kom_recorded,kom_unrecorded,kom_unrecorded_old_entries,oek_recorded,oek_unrecorded,ema_recorded,ema_unrecorded,mae&zoomobject=true"
## This look up table (LUT) defines different zoom levels on the size of the calculate area of a geometry.
LANIS_ZOOM_LUT = {
1000000000: 6,