Private
Public Access
1
0

import courses from kml

This commit is contained in:
Sander Roosendaal
2018-02-16 14:03:18 +01:00
parent d45b674a15
commit 3f56bff2fa
3 changed files with 68 additions and 2 deletions

View File

@@ -6,6 +6,7 @@ from .models import (
Rower, Workout,GraphImage,FavoriteChart,SiteAnnouncement,
Team,TeamInvite,TeamRequest,
WorkoutComment,C2WorldClassAgePerformance,PlannedSession,
GeoCourse,GeoPolygon,GeoPoint,
)
# Register your models here so you can use them in the Admin module
@@ -50,6 +51,16 @@ class PlannedSessionAdmin(admin.ModelAdmin):
class GraphImageAdmin(admin.ModelAdmin):
list_display = ('creationdatetime','workout','filename')
class GeoPolygonInline(admin.StackedInline):
model = GeoPolygon
class GeoCourseAdmin(admin.ModelAdmin):
list_display = ('manager','name')
inlines = (GeoPolygonInline,)
admin.site.unregister(User)
admin.site.register(User,UserAdmin)
admin.site.register(Workout,WorkoutAdmin)
@@ -63,4 +74,4 @@ admin.site.register(WorkoutComment,WorkoutCommentAdmin)
admin.site.register(C2WorldClassAgePerformance,
C2WorldClassAgePerformanceAdmin)
admin.site.register(PlannedSession,PlannedSessionAdmin)
admin.site.register(GeoCourse, GeoCourseAdmin)

View File

@@ -12,6 +12,9 @@ from django.conf import settings
from utils import myqueue
from matplotlib import path
import xml.etree.ElementTree as et
ns = {'opengis': 'http://www.opengis.net/kml/2.2'}
import django_rq
queue = django_rq.get_queue('default')
@@ -44,7 +47,7 @@ def polygon_to_path(polygon):
def coordinate_in_polygon(latitude,longitude, polygon):
p = polygon_to_path(polygon)
retun p.contains_points([(latitude,longitude)])[0]
return p.contains_points([(latitude,longitude)])[0]
@@ -71,3 +74,54 @@ def time_in_polygon(df,polygon,maxmin='max'):
return time
def kmltocourse(f):
doc = et.parse(f)
polygonpms = doc.findall('.//opengis:Placemark[opengis:Polygon]',ns)
polygons = []
for pm in polygonpms:
name = pm.findall('.//opengis:name',ns)[0].text
coordinates = pm.findall('.//opengis:coordinates',ns)
if coordinates:
cc = coordinates[0].text
else:
cc = ''
pointstring = cc.split()
points = []
for s in pointstring:
coordinates = s.split(',')
points.append({
'longitude':float(coordinates[0]),
'latitude':float(coordinates[1]),
})
polygons.append({
'name':name,
'points':points
})
return polygons
def createcourse(manager,name,polygons):
c = GeoCourse(manager=manager,name=name)
c.save()
i = 0
for p in polygons:
pp = GeoPolygon(course=c,order_in_course=i,name=p['name'])
pp.save()
j = 0
for point in p['points']:
obj = GeoPoint(
latitude = point['latitude'],
longitude = point['longitude'],
polygon = pp,
order_in_poly = j
)
obj.save()
j += 1
i += 1

View File

@@ -664,6 +664,7 @@ class GeoCourse(models.Model):
class GeoPolygon(models.Model):
name = models.CharField(max_length=150,blank=True)
course = models.ForeignKey(GeoCourse, blank=True)
order_in_course = models.IntegerField(default=0)