def insertDataImage(request): if request.method == 'POST': # If the form has been submitted... stationform = StationForm(request.user.get_username(),request.POST, request.FILES) # A form bound to the POST data nominatimform = NominatimForm(request.POST) # A form bound to the POST data form = ImageForm(request.POST, request.FILES) # A form bound to the POST data if stationform.is_valid(): # All validation rules pass slug=stationform.cleaned_data['station_slug'] if slug: station=StationMetadata.objects.get(ident__username=request.user.username,slug=slug) #stationlat=station.lat #stationlon=station.lon request.POST['geom']= str(Point(station.lon,station.lat)) return render(request, 'insertdata/form.html',{'form': form,'stationform':stationform,'nominatimform':nominatimform}) else: stationform = StationForm(request.user.get_username()) return render(request, 'insertdata/form.html',{'form': form,'stationform':stationform,'nominatimform':nominatimform,"invalid":True}) if nominatimform.is_valid(): # All validation rules pass address=nominatimform.cleaned_data['address'] if address: nom = Nominatim(base_url="http://nominatim.openstreetmap.org",referer= get_current_site(request)) result=nom.query(address,limit=1,countrycodes="IT") if len(result) >= 1: lat= result[0]["lat"] lon= result[0]["lon"] address= result[0]["display_name"] request.POST['geom']= str(Point(float(lon),float(lat))) request.POST['address']= address return render(request, 'insertdata/form.html',{'form': form,'stationform':stationform,'nominatimform':nominatimform}) else: nominatimform = NominatimForm() return render(request, 'insertdata/form.html',{'form': form,'stationform':stationform,'nominatimform':nominatimform,"invalid":True}) if form.is_valid(): # All validation rules pass if True: from rmap import exifutils comment=form.cleaned_data['comment'] geom=form.cleaned_data['geom'] image=request.FILES['image'] dt=datetime.utcnow().replace(microsecond=0) lon=geom['coordinates'][0] lat=geom['coordinates'][1] image=image.read() body=exifutils.setgeoimage(image,lat,lon,imagedescription=request.user.username,usercomment=comment) else: import pexif img = pexif.JpegFile.fromString(handle_uploaded_file(image).encode("utf8")) exif = img.get_exif() if exif: primary = exif.get_primary() if not exif is None or not primary is None: primary.ImageDescription = str(request.user.username) #primary.ExtendedEXIF.UserComment = "UNICODE"+chr(0x00)+str(comment) primary.ExtendedEXIF.UserComment = chr(0x55)+chr(0x4E)+chr(0x49)+chr(0x43)+chr(0x4F)+chr(0x44)+chr(0x45)+chr(0x00)+str(comment) img.set_geo(lat,lon) # try: # print primary.DateTime # except: # print "DateTime not present" primary.DateTime=datetime.utcnow().strftime("%Y:%m:%d %H:%M:%S") # print primary.DateTime body=img.writeString() #grimages=GeorefencedImage.objects.filter(ident__username=ident) #grimages=GeorefencedImage.objects.filter(id=1) #f = NamedTemporaryFile(delete=False) #image = File(f) #image.write(body) #f.close() #os.unlink(f.name) if True: #inserimento diretto in DB geoimage=GeorefencedImage(active=True,geom = geom,comment=comment,ident=request.user, date=dt, category = CATEGORY_CHOICES[1]) geoimage.image.save('geoimage.jpg',ContentFile(body)) geoimage.save() else: # invio ad AMQP #quale utente usare per AMQP; ho l'utente ma non la password #bisognerebbe abilitare tutti gli admin a pubblicare immagini e qui usare amqpuser #user=request.user.username, user=rmap.settings.amqpuser password=rmap.settings.amqppassword import rmap.rmap_core rmap.rmap_core.send2amqp(body=body, user=user, password=password, host="localhost", exchange="photo",routing_key="photo") #return HttpResponseRedirect(reverse('geoimage-ident-id', args=[request.user.username,geoimage.pk])) return HttpResponseRedirect(reverse('geoimage-ident', args=[request.user.username])) else: form = ImageForm() # An unbound form return render(request, 'insertdata/form.html',{'form': form,'stationform':stationform,'nominatimform':nominatimform,"invalid":True}) else: stationform = StationForm(request.user.get_username()) # An unbound form nominatimform = NominatimForm() # An unbound form form = ImageForm() # An unbound form return render(request, 'insertdata/form.html',{'form': form,'stationform':stationform,'nominatimform':nominatimform})
def insertNewStation(request): if request.method == 'POST': # If the form has been submitted... nominatimform = NominatimForm( request.POST) # A form bound to the POST data newstationform = NewStationForm( request.POST) # A form bound to the POST data if nominatimform.is_valid(): # All validation rules pass address = nominatimform.cleaned_data['address'] if address: nom = Nominatim(base_url="http://nominatim.openstreetmap.org", referer=get_current_site(request)) result = nom.query(address, limit=1, countrycodes="IT") if len(result) >= 1: lat = result[0]["lat"] lon = result[0]["lon"] address = result[0]["display_name"] request.POST['geom'] = str(Point(float(lon), float(lat))) request.POST['address'] = address return render( request, 'insertdata/newstationform.html', { 'nominatimform': nominatimform, 'newstationform': newstationform }) else: nominatimform = NominatimForm() return render( request, 'insertdata/newstationform.html', { 'nominatimform': nominatimform, 'newstationform': newstationform, "invalid": True }) if newstationform.is_valid(): # All validation rules pass geom = newstationform.cleaned_data['geom'] lon = geom['coordinates'][0] lat = geom['coordinates'][1] ident = request.user.username name = newstationform.cleaned_data['name'] if name: try: print "new station:", name, ident, lon, lat mystation = StationMetadata(slug=slugify(name), name=name) user = User.objects.get(username=ident) mystation.ident = user mystation.lat = lat mystation.lon = lon mystation.active = True mystation.save() except: return render( request, 'insertdata/newstationform.html', { 'nominatimform': nominatimform, 'newstationform': newstationform, "error": True }) return render(request, 'insertdata/newstationform.html', { 'nominatimform': nominatimform, 'newstationform': newstationform }) else: print "invalid form" form = NewStationForm() # An unbound form return render( request, 'insertdata/newstationform.html', { 'nominatimform': nominatimform, 'newstationform': newstationform, "invalid": True }) else: nominatimform = NominatimForm() # An unbound form newstationform = NewStationForm() # An unbound form return render(request, 'insertdata/newstationform.html', { 'nominatimform': nominatimform, 'newstationform': newstationform, })
return [point1, point2, point3, point4, point5] #tracer les polygones représentants les cities for place in liste_places: # print(transform_coord(place)) folium.PolyLine(transform_coord(place), color='darkred', weight=2.5, opacity='0.7').add_to(m) import re nom = Nominatim() def get_city_center(city): for c in city: if c == "é" or c == "è" or c == "ê" or c == "ë": city = city.replace(c, "e") if c == "à" or c == "â" or c == "ä": city = city.replace(c, "a") if c == "û" or c == "ù" or c == "ü": city = city.replace(c, "u") if c == "î" or c == "ï": city = city.replace(c, "i") if c == "ô" or c == "ö":
def insertDataManualData(request): if request.method == 'POST': # If the form has been submitted... #stationlat=None #stationlon=None stationform = StationForm( request.user.get_username(), request.POST) # A form bound to the POST data nominatimform = NominatimForm( request.POST) # A form bound to the POST data form = ManualForm(request.POST) # A form bound to the POST data if stationform.is_valid(): # All validation rules pass slug = stationform.cleaned_data['station_slug'] if slug: station = StationMetadata.objects.get( ident__username=request.user.username, slug=slug) #stationlat=station.lat #stationlon=station.lon request.POST['geom'] = str(Point(station.lon, station.lat)) request.POST['coordinate_slug'] = slug return render( request, 'insertdata/manualdataform.html', { 'form': form, 'stationform': stationform, 'nominatimform': nominatimform }) else: stationform = StationForm(request.user.get_username()) return render( request, 'insertdata/manualdataform.html', { 'form': form, 'stationform': stationform, 'nominatimform': nominatimform, "invalid": True }) if nominatimform.is_valid(): # All validation rules pass address = nominatimform.cleaned_data['address'] if address: nom = Nominatim(base_url="http://nominatim.openstreetmap.org", referer=get_current_site(request)) result = nom.query(address, limit=1, countrycodes="IT") if len(result) >= 1: lat = result[0]["lat"] lon = result[0]["lon"] address = result[0]["display_name"] request.POST['geom'] = str(Point(float(lon), float(lat))) request.POST['address'] = address return render( request, 'insertdata/manualdataform.html', { 'form': form, 'stationform': stationform, 'nominatimform': nominatimform }) else: nominatimform = NominatimForm() return render( request, 'insertdata/manualdataform.html', { 'form': form, 'stationform': stationform, 'nominatimform': nominatimform, "invalid": True }) if form.is_valid(): # All validation rules pass geom = form.cleaned_data['geom'] lon = geom['coordinates'][0] lat = geom['coordinates'][1] dt = datetime.utcnow().replace(microsecond=0) ident = request.user.username #if (not stationlat is None): # if (stationlat != lat): # stationform = StationForm(request.user.get_username()) # return render(request, 'insertdata/manualdataform.html',{'form': form,'stationform':stationform,"invalid":True}) #if (not stationlon is None): # if (stationlon != lon): # stationform = StationForm(request.user.get_username()) # return render(request, 'insertdata/manualdataform.html',{'form': form,'stationform':stationform,"invalid":True}) datavar = {} value = form.cleaned_data['presentweather'] if (value != ""): datavar["B20003"] = {"t": dt, "v": str(value)} value = form.cleaned_data['snow_height'] if (not value is None): value = int(value * 10) datavar["B13013"] = {"t": dt, "v": str(value)} value = form.cleaned_data['visibility'] if (not value is None): value = int(value / 10) datavar["B20001"] = {"t": dt, "v": str(value)} print "datavar:", datavar if (len(datavar) > 0): try: user = rmap.settings.mqttuser password = rmap.settings.mqttpassword prefix = rmap.settings.topicreport slug = form.cleaned_data['coordinate_slug'] if (slug): network = "fixed" else: network = "mobile" print "<", slug, ">", "prefix:", prefix mqtt = rmapmqtt(ident=ident, lon=lon, lat=lat, network=network, host="localhost", port=1883, prefix=prefix, maintprefix=prefix, username=user, password=password) mqtt.data(timerange="254,0,0", level="1,-,-,-", datavar=datavar) mqtt.disconnect() form = ManualForm() # An unbound form except: return render( request, 'insertdata/manualdataform.html', { 'form': form, 'stationform': stationform, 'nominatimform': nominatimform, "error": True }) return render( request, 'insertdata/manualdataform.html', { 'form': form, 'stationform': stationform, 'nominatimform': nominatimform }) else: print "invalid form" form = ManualForm() # An unbound form return render( request, 'insertdata/manualdataform.html', { 'form': form, 'stationform': stationform, 'nominatimform': nominatimform, "invalid": True }) else: stationform = StationForm( request.user.get_username()) # An unbound form nominatimform = NominatimForm() # An unbound form form = ManualForm() # An unbound form return render( request, 'insertdata/manualdataform.html', { 'form': form, 'stationform': stationform, 'nominatimform': nominatimform })
def insertNewStation(request): if request.method == 'POST': # If the form has been submitted... nominatimform = NominatimForm( request.POST) # A form bound to the POST data newstationform = NewStationForm( request.POST) # A form bound to the POST data if nominatimform.is_valid(): # All validation rules pass address = nominatimform.cleaned_data['address'] if address: nom = Nominatim(base_url="https://nominatim.openstreetmap.org", referer=get_current_site(request).domain) result = nom.query(address, limit=1, countrycodes="IT") if len(result) >= 1: lat = result[0]["lat"] lon = result[0]["lon"] address = result[0]["display_name"] POST = request.POST.copy() POST['geom'] = str(Point(float(lon), float(lat))) POST['address'] = address newstationform = NewStationForm( POST) # A form bound to the new data nominatimform = NominatimForm( POST) # A form bound to the new data return render( request, 'insertdata/newstationform.html', { 'nominatimform': nominatimform, 'newstationform': newstationform }) else: nominatimform = NominatimForm() return render( request, 'insertdata/newstationform.html', { 'nominatimform': nominatimform, 'newstationform': newstationform, "invalid": True }) if newstationform.is_valid(): # All validation rules pass geom = newstationform.cleaned_data['geom'] lon = geom['coordinates'][0] lat = geom['coordinates'][1] ident = request.user.username name = newstationform.cleaned_data['name'] slug = slugify(name) board_slug = "default" template = newstationform.cleaned_data['template'] if name: try: try: print("del station:", ident, slug, ident) mystation = StationMetadata.objects.get( slug__exact=slug, ident__username=ident) mystation.delete() except Exception as e: print(e) print("new station:", name, ident, lon, lat) mystation = StationMetadata(slug=slug, name=name) user = User.objects.get(username=ident) mystation.ident = user mystation.lat = rmap.rmap_core.truncate(lat, 5) mystation.lon = rmap.rmap_core.truncate(lon, 5) mystation.active = True # this in not very good ! we need to specify better in template the type (report/sample) if ("_report_" in template): mystation.mqttrootpath = "report" mystation.clean() mystation.save() rmap.rmap_core.addboard(station_slug=slug, username=ident, board_slug=board_slug, activate=True, serialactivate=False, mqttactivate=True, mqttserver="rmap.cc", mqttusername=ident, mqttpassword="******", mqttsamplerate=30, bluetoothactivate=False, bluetoothname="HC-05", amqpactivate=False, amqpusername="******", amqppassword="******", amqpserver="rmap.cc", queue="rmap", exchange="rmap", tcpipactivate=False, tcpipname="master", tcpipntpserver="ntpserver") rmap.rmap_core.addsensors_by_template( station_slug=slug, username=ident, board_slug=board_slug, template=template) except Exception as e: print(e) return render( request, 'insertdata/newstationform.html', { 'nominatimform': nominatimform, 'newstationform': newstationform, "error": True }) return render( request, 'insertdata/newstationform.html', { 'nominatimform': nominatimform, 'newstationform': newstationform, "station": mystation }) else: print("invalid form") form = NewStationForm() # An unbound form return render( request, 'insertdata/newstationform.html', { 'nominatimform': nominatimform, 'newstationform': newstationform, "invalid": True }) else: nominatimform = NominatimForm() # An unbound form newstationform = NewStationForm() # An unbound form return render(request, 'insertdata/newstationform.html', { 'nominatimform': nominatimform, 'newstationform': newstationform, })