def get_site_geometry(request): import json from django.shortcuts import HttpResponse import voxel_globe.meta.models as models import brl_init import vpgl_adaptor_boxm2_batch as vpgl_adaptor image_id = int(request.GET['image_id']) site_id = int(request.GET['site_id']) image = models.Image.objects.get(id=image_id) site = models.SattelSite.objects.get(id=site_id) camera = image.camera_set.filter( cameraset=site.camera_set).select_subclasses('rpccamera')[0] vxl_camera = vpgl_adaptor.load_rational_camera_from_txt(camera.rpc_path) x1 = site.bbox_min[0] y1 = site.bbox_min[1] x2 = site.bbox_max[0] y2 = site.bbox_max[1] z = site.bbox_min[2] points = [] coords = [[x1, y1, z], [x1, y2, z], [x2, y2, z], [x2, y1, z], [x1, y1, z]] for coord in coords: points.append(vpgl_adaptor.project_point(vxl_camera, *coord)) return HttpResponse(json.dumps(points), content_type="application/json")
def get_event_geometry(request): import json from django.shortcuts import HttpResponse import voxel_globe.meta.models as models import brl_init import vpgl_adaptor_boxm2_batch as vpgl_adaptor image_id = int(request.GET['image_id']) site_id = int(request.GET['site_id']) sattelgeometryobject_id = int(request.GET['sattelgeometryobject_id']) image = models.Image.objects.get(id=image_id) site = models.SattelSite.objects.get(id=site_id) camera = image.camera_set.filter( cameraset=site.camera_set).select_subclasses('rpccamera')[0] vxl_camera = vpgl_adaptor.load_rational_camera_from_txt(camera.rpc_path) sattelgeometryobject = models.SattelGeometryObject.objects.get( id=sattelgeometryobject_id) polygon = sattelgeometryobject.geometry points = [] for coord in polygon.coords[0]: points.append(vpgl_adaptor.project_point(vxl_camera, *coord)) up_vector = vpgl_adaptor.rational_camera_get_up_vector(vxl_camera) response = {'points': points, 'up': up_vector} return HttpResponse(json.dumps(response), content_type="application/json")
def get_additional_image_info(request, image_id, camera_set_id): import json response = {} image = voxel_globe.meta.models.Image.objects.get(id=image_id) rpc = image.camera_set.filter(cameraset=camera_set_id).select_subclasses('rpccamera')[0] if type(rpc) != voxel_globe.meta.models.RpcCamera: rpc = None #Same for perspective here attributes = image.attributes if attributes.has_key("planet_rest_response"): response['gsd'] = attributes['planet_rest_response']['properties']['image_statistics']['gsd'] else: pass #Check for RPC or perspective camera, and get gsd if rpc: import brl_init import vpgl_adaptor_boxm2_batch as vpgl print 0 vxl_cam =vpgl.load_rational_camera_from_txt(rpc.rpc_path) print 1, vxl_cam print vpgl.rational_camera_rotate_to_north(vxl_cam) print 2 response['north_rotation'] = vpgl.rational_camera_rotate_to_north(vxl_cam) # response['up_rotation'] = 1.1 return HttpResponse(json.dumps(response), content_type="application/json")
def get_event_geometry(request): import json from django.shortcuts import HttpResponse import voxel_globe.meta.models as models import brl_init import vpgl_adaptor_boxm2_batch as vpgl_adaptor image_id = int(request.GET['image_id']) site_id = int(request.GET['site_id']) sattelgeometryobject_id = int(request.GET['sattelgeometryobject_id']) image = models.Image.objects.get(id=image_id) site = models.SattelSite.objects.get(id=site_id) camera = image.camera_set.filter(cameraset=site.camera_set).select_subclasses('rpccamera')[0] vxl_camera = vpgl_adaptor.load_rational_camera_from_txt(camera.rpc_path) sattelgeometryobject = models.SattelGeometryObject.objects.get(id=sattelgeometryobject_id) polygon = sattelgeometryobject.geometry points = [] for coord in polygon.coords[0]: points.append(vpgl_adaptor.project_point(vxl_camera, *coord)) up_vector = vpgl_adaptor.rational_camera_get_up_vector(vxl_camera) response = {'points':points, 'up':up_vector} return HttpResponse(json.dumps(response), content_type="application/json")
def get_site_geometry(request): import json from django.shortcuts import HttpResponse import voxel_globe.meta.models as models import brl_init import vpgl_adaptor_boxm2_batch as vpgl_adaptor image_id = int(request.GET['image_id']) site_id = int(request.GET['site_id']) image = models.Image.objects.get(id=image_id) site = models.SattelSite.objects.get(id=site_id) camera = image.camera_set.filter(cameraset=site.camera_set).select_subclasses('rpccamera')[0] vxl_camera = vpgl_adaptor.load_rational_camera_from_txt(camera.rpc_path) x1 = site.bbox_min[0] y1 = site.bbox_min[1] x2 = site.bbox_max[0] y2 = site.bbox_max[1] z = site.bbox_min[2] points = [] coords = [[x1,y1,z], [x1,y2,z], [x2,y2,z], [x2,y1,z], [x1,y1,z]] for coord in coords: points.append(vpgl_adaptor.project_point(vxl_camera, *coord)) return HttpResponse(json.dumps(points), content_type="application/json")
def update_geometry_polygon(request): import voxel_globe.meta.models as models from django.contrib.gis.geos import Point, Polygon, GEOSGeometry import numpy as np import brl_init import vpgl_adaptor_boxm2_batch as vpgl_adaptor image_id = int(request.POST['image_id']) points = GEOSGeometry(request.POST['points']) sattelgeometryobject_id = int(request.POST['sattelgeometryobject_id']) site_id = int(request.POST['site_id']) projection_mode = request.POST['projection_mode'] site = models.SattelSite.objects.get(id=site_id) image = models.Image.objects.get(id=image_id) camera = image.camera_set.filter( cameraset=site.camera_set).select_subclasses('rpccamera')[0] sattelgeometryobject = models.SattelGeometryObject.objects.get( id=sattelgeometryobject_id) vpgl_camera = vpgl_adaptor.load_rational_camera_from_txt(camera.rpc_path) initial_guess = np.mean(image.attributes['planet_rest_response'] ['geometry']['coordinates'][0][0:4], axis=0) initial_guess = np.hstack((initial_guess, 0)) #elevation guess is 0 lvcs_points = [] gps_points = [] if projection_mode == "z-plane": projection_height = float(request.POST['height']) for point in points.coords[0]: point = vpgl_adaptor.get_rpc_backprojected_ray( vpgl_camera, point[0], point[1], projection_height, initial_guess[0], initial_guess[1], initial_guess[2]) gps_points.append(point) origin = np.array(gps_points).mean(axis=0) lvcs = vpgl_adaptor.create_lvcs(origin[1], origin[0], origin[2], "wgs84") origin = Point(*origin) for point in gps_points: point = vpgl_adaptor.convert_to_local_coordinates2( lvcs, point[1], point[0], point[2]) lvcs_points.append(point) print sattelgeometryobject.geometry_path if sattelgeometryobject.geometry_path and os.path.exists( sattelgeometryobject.geometry_path): os.remove(sattelgeometryobject.geometry_path) geometry_filepath = write_ply_file(lvcs_points) sattelgeometryobject.geometry_path = geometry_filepath sattelgeometryobject.origin = origin sattelgeometryobject.geometry = Polygon(gps_points + gps_points[0:1]) sattelgeometryobject.save() from django.shortcuts import HttpResponse return HttpResponse('{}', content_type="application/json")
def update_geometry_polygon(request): import voxel_globe.meta.models as models from django.contrib.gis.geos import Point, Polygon, GEOSGeometry import numpy as np import brl_init import vpgl_adaptor_boxm2_batch as vpgl_adaptor image_id = int(request.POST['image_id']) points = GEOSGeometry(request.POST['points']) sattelgeometryobject_id = int(request.POST['sattelgeometryobject_id']) site_id = int(request.POST['site_id']) projection_mode = request.POST['projection_mode'] site = models.SattelSite.objects.get(id=site_id) image = models.Image.objects.get(id=image_id) camera = image.camera_set.filter(cameraset=site.camera_set).select_subclasses('rpccamera')[0] sattelgeometryobject = models.SattelGeometryObject.objects.get(id=sattelgeometryobject_id) vpgl_camera = vpgl_adaptor.load_rational_camera_from_txt(camera.rpc_path) initial_guess = np.mean(image.attributes['planet_rest_response']['geometry']['coordinates'][0][0:4], axis=0) initial_guess = np.hstack((initial_guess, 0)) #elevation guess is 0 lvcs_points = [] gps_points = [] if projection_mode == "z-plane": projection_height = float(request.POST['height']) for point in points.coords[0]: point = vpgl_adaptor.get_rpc_backprojected_ray(vpgl_camera, point[0], point[1], projection_height, initial_guess[0], initial_guess[1], initial_guess[2]) gps_points.append(point) origin = np.array(gps_points).mean(axis=0) lvcs = vpgl_adaptor.create_lvcs(origin[1], origin[0], origin[2], "wgs84") origin = Point(*origin) for point in gps_points: point = vpgl_adaptor.convert_to_local_coordinates2(lvcs, point[1], point[0], point[2]) lvcs_points.append(point) print sattelgeometryobject.geometry_path if sattelgeometryobject.geometry_path and os.path.exists(sattelgeometryobject.geometry_path): os.remove(sattelgeometryobject.geometry_path) geometry_filepath = write_ply_file(lvcs_points) sattelgeometryobject.geometry_path=geometry_filepath sattelgeometryobject.origin = origin sattelgeometryobject.geometry = Polygon(gps_points+gps_points[0:1]) sattelgeometryobject.save() from django.shortcuts import HttpResponse return HttpResponse('{}', content_type="application/json")