mirror of
https://expo.survex.com/repositories/troggle/.git
synced 2024-11-21 23:01:52 +00:00
Entrance locations showing lat long screwups
This commit is contained in:
parent
a85f859f88
commit
017f916ef9
@ -10,7 +10,7 @@ from django.template import loader
|
||||
|
||||
import settings
|
||||
from troggle.core.models.logbooks import QM
|
||||
from troggle.core.models.survex import SurvexStation
|
||||
from troggle.core.models.survex import SurvexStation, utmToLatLng
|
||||
from troggle.core.models.troggle import DataIssue, TroggleModel
|
||||
from troggle.core.utils import TROG, writetrogglefile
|
||||
|
||||
@ -123,7 +123,7 @@ class Cave(TroggleModel):
|
||||
pass
|
||||
else:
|
||||
self.official_name.lower()
|
||||
return Path(settings.URL_ROOT) / self.url # not good Django style.. NEEDS actual URL
|
||||
return Path(settings.URL_ROOT) / self.url # not good Django style? NEEDS actual URL
|
||||
|
||||
def url_parent(self):
|
||||
if self.url:
|
||||
@ -232,7 +232,7 @@ class Entrance(TroggleModel):
|
||||
alt = models.TextField(blank=True, null=True)
|
||||
approach = models.TextField(blank=True, null=True)
|
||||
bearings = models.TextField(blank=True, null=True)
|
||||
easting = models.TextField(blank=True, null=True)
|
||||
easting = models.TextField(blank=True, null=True) # apparently? manually entered not calculated
|
||||
entrance_description = models.TextField(blank=True, null=True)
|
||||
exact_station = models.TextField(blank=True, null=True)
|
||||
explorers = models.TextField(blank=True, null=True)
|
||||
@ -240,14 +240,14 @@ class Entrance(TroggleModel):
|
||||
findability = models.CharField(max_length=1, choices=FINDABLE_CHOICES, blank=True, null=True)
|
||||
findability_description = models.TextField(blank=True, null=True)
|
||||
lastvisit = models.TextField(blank=True, null=True)
|
||||
lat_wgs84 = models.TextField(blank=True, null=True)
|
||||
lat_wgs84 = models.TextField(blank=True, null=True) # manually entered not calculated
|
||||
location_description = models.TextField(blank=True, null=True)
|
||||
long_wgs84 = models.TextField(blank=True, null=True)
|
||||
long_wgs84 = models.TextField(blank=True, null=True) # manually entered not calculated
|
||||
map_description = models.TextField(blank=True, null=True)
|
||||
marking = models.CharField(max_length=2, choices=MARKING_CHOICES)
|
||||
marking_comment = models.TextField(blank=True, null=True)
|
||||
name = models.CharField(max_length=100, blank=True, null=True)
|
||||
northing = models.TextField(blank=True, null=True)
|
||||
northing = models.TextField(blank=True, null=True) # apparently? manually entered not calculated
|
||||
other_description = models.TextField(blank=True, null=True)
|
||||
other_station = models.TextField(blank=True, null=True)
|
||||
photo = models.TextField(blank=True, null=True)
|
||||
@ -410,6 +410,12 @@ class Entrance(TroggleModel):
|
||||
return ""
|
||||
|
||||
def latlong(self):
|
||||
"""Gets lat long assuming that it has to get it from the associated stations, but in fact the Entrance itself
|
||||
has easting/northing and lat/long fields which perhaps we should try first...
|
||||
"""
|
||||
if self.easting and self.northing:
|
||||
return utmToLatLng(33, float(self.easting), float(self.northing), northernHemisphere=True)
|
||||
|
||||
station = None
|
||||
if self.other_station:
|
||||
try:
|
||||
@ -429,6 +435,17 @@ class Entrance(TroggleModel):
|
||||
if station:
|
||||
return station.latlong()
|
||||
|
||||
def lat(self):
|
||||
if self.latlong():
|
||||
return self.latlong()[0]
|
||||
else:
|
||||
return None
|
||||
|
||||
def long(self):
|
||||
if self.latlong():
|
||||
return self.latlong()[1]
|
||||
else:
|
||||
return None
|
||||
|
||||
def GetCaveLookup():
|
||||
"""A very relaxed way of finding probably the right cave given almost any string which might serve to identify it
|
||||
|
@ -67,7 +67,10 @@ class SurvexStation(models.Model):
|
||||
|
||||
def latlong(self):
|
||||
return utmToLatLng(33, self.x, self.y, northernHemisphere=True)
|
||||
|
||||
def lat(self):
|
||||
return utmToLatLng(33, self.x, self.y, northernHemisphere=True)[0]
|
||||
def long(self):
|
||||
return utmToLatLng(33, self.x, self.y, northernHemisphere=True)[1]
|
||||
import math
|
||||
|
||||
def utmToLatLng(zone, easting, northing, northernHemisphere=True): # move this to utils.py ?
|
||||
|
@ -284,6 +284,29 @@ def eastings(request):
|
||||
if e.lat_wgs84 or e.long_wgs84:
|
||||
ents.append(e)
|
||||
|
||||
for e in ents:
|
||||
try:
|
||||
ts = e.tag_station
|
||||
if ts:
|
||||
e.tag_ts = SurvexStation.objects.get(name=ts)
|
||||
print(f"{e} {e.tag_ts} {e.tag_ts.lat()} {e.tag_ts.long()}")
|
||||
|
||||
es = e.exact_station
|
||||
if es:
|
||||
e.tag_es = SurvexStation.objects.get(name=es)
|
||||
print(f"{e} {e.tag_es} {e.tag_es.lat()} {e.tag_es.long()}")
|
||||
|
||||
os = e.other_station
|
||||
if os:
|
||||
e.tag_os = SurvexStation.objects.get(name=os)
|
||||
print(f"{e} {e.tag_os} {e.tag_os.lat()} {e.tag_os.long()}")
|
||||
|
||||
except:
|
||||
e.tag_ss = None
|
||||
e.tag_es = None
|
||||
e.tag_os = None
|
||||
# print(f"exception for {e}")
|
||||
|
||||
stations = SurvexStation.objects.all()
|
||||
|
||||
return render(request, "eastings.html", {"ents": ents, "stations": stations})
|
||||
|
@ -29,7 +29,7 @@ th, td {
|
||||
padding-right: 5px;
|
||||
</style>
|
||||
<table>
|
||||
<tr><th>Cave</th><th>Entrance</th><th>Easting</th><th>Northing</th><th>Lat</th><th>Long</th><th>tag</th><th>tag exact</th><th>tag other</th><th>slug</th></tr>
|
||||
<tr><th>Cave</th><th>Entrance</th><th>best Easting</th><th>best Northing</th><th>GPS Lat</th><th>GPS Long</th><th>tag</th><th>tag exact</th><th>tag other</th><th>slug</th></tr>
|
||||
{% for ent in ents %}
|
||||
<tr>
|
||||
<td style="text-align:left">
|
||||
@ -59,6 +59,35 @@ th, td {
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
<p>and now with the locations of the survey stations. All as UTM eatings, norhtings:
|
||||
<table>
|
||||
<tr><th>Cave</th><th>best Lat</th><th>best Long</th><th>tag</th><th>tag Lat</th><th>tag Long</th><th>tag exact</th><th>exact Lat</th><th>exact Long</th><th>tag other</th><th>other Lat</th><th>other Long</th></tr>
|
||||
{% for ent in ents %}
|
||||
<tr>
|
||||
<td style="text-align:left">
|
||||
{% for c in ent.cavelist %}
|
||||
<a href="/{{c.url}}">
|
||||
{% if c.official_name %}
|
||||
{{c.official_name|safe}}
|
||||
{% else %}
|
||||
<em>{{c|safe}}</em>
|
||||
{% endif %}</a><br>
|
||||
{% endfor %}</td>
|
||||
|
||||
<td style="text-align:right">{{ent.lat|floatformat:6}}</td>
|
||||
<td style="text-align:right">{{ent.long|floatformat:6}}</td>
|
||||
<td style="text-align:right">{{ent.tag_station}}</td>
|
||||
<td style="text-align:right">{{ent.tag_ts.lat|floatformat:6}}</td>
|
||||
<td style="text-align:right">{{ent.tag_ts.long|floatformat:6}}</td>
|
||||
<td style="text-align:right">{{ent.exact_station}}</td>
|
||||
<td style="text-align:right">{{ent.tag_es.lat|floatformat:6}}</td>
|
||||
<td style="text-align:right">{{ent.tag_es.long|floatformat:6}}</td>
|
||||
<td style="text-align:right">{{ent.other_station}}</td>
|
||||
<td style="text-align:right">{{ent.tag_os.lat|floatformat:6}}</td>
|
||||
<td style="text-align:right">{{ent.tag_os.long|floatformat:6}}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
<p>But the Entrances - the objects in the troggle system - are not properly connected to the dataset which is the combined set of survex data. They are only linked - and only implicitly - by the tag name. The data in the table below is calculated directly from
|
||||
the assemblage of survex files, including fixed point files, and is probably 'correct'.
|
||||
@ -70,12 +99,15 @@ the assemblage of survex files, including fixed point files, and is probably 'co
|
||||
<a href="/handbook/survey/coord.htm">Basic Coordinate Systems</a>.
|
||||
|
||||
<table cellpadding="6" cellspacing="8">
|
||||
<tr><th>Survex Station</th><th>x</th><th>y</th></tr>
|
||||
<tr><th>Survex Station</th><th>x</th><th>y</th><th>lat.</th><th>long.</th></tr>
|
||||
{% for s in stations %}
|
||||
<tr>
|
||||
<td style="text-align:left; width:240px"> {{s.name|safe}} </td>
|
||||
<td style="text-align:right; width:90px"> {{s.x|floatformat:2}} </td>
|
||||
<td style="text-align:right; width:90px"> {{s.y|floatformat:2}} </td>
|
||||
<td style="text-align:right; width:90px"> {{s.lat|floatformat:6}} </td>
|
||||
<td style="text-align:right; width:90px"> {{s.long|floatformat:6}} </td>
|
||||
|
||||
</tr>
|
||||
{% empty %}
|
||||
<td colspan="3"> NO STATION DATA - This is due to survex (cavern) failing on the entire dataset.
|
||||
|
Loading…
Reference in New Issue
Block a user