kopia lustrzana https://github.com/OpenDroneMap/WebODM
Test fixes, postgis migration
rodzic
5c54aca9c1
commit
7db9ba200b
|
@ -0,0 +1,9 @@
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [("app", "0001_initial")]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RunSQL("SET postgis.enable_outdb_rasters TO True;"),
|
||||||
|
migrations.RunSQL("SET postgis.gdal_enabled_drivers TO 'GTiff';")
|
||||||
|
]
|
|
@ -243,7 +243,7 @@ class Task(models.Model):
|
||||||
# Process this as a new task
|
# Process this as a new task
|
||||||
# Removing its UUID will cause the scheduler
|
# Removing its UUID will cause the scheduler
|
||||||
# to process this the next tick
|
# to process this the next tick
|
||||||
self.uuid = None
|
self.uuid = ''
|
||||||
|
|
||||||
self.console_output = ""
|
self.console_output = ""
|
||||||
self.processing_time = -1
|
self.processing_time = -1
|
||||||
|
@ -304,11 +304,11 @@ class Task(models.Model):
|
||||||
logger.info("Downloading all.zip for {}".format(self))
|
logger.info("Downloading all.zip for {}".format(self))
|
||||||
|
|
||||||
# Download all assets
|
# Download all assets
|
||||||
#zip_stream = self.processing_node.download_task_asset(self.uuid, "all.zip")
|
zip_stream = self.processing_node.download_task_asset(self.uuid, "all.zip")
|
||||||
zip_path = os.path.join(assets_dir, "all.zip")
|
zip_path = os.path.join(assets_dir, "all.zip")
|
||||||
#with open(zip_path, 'wb') as fd:
|
with open(zip_path, 'wb') as fd:
|
||||||
# for chunk in zip_stream.iter_content(4096):
|
for chunk in zip_stream.iter_content(4096):
|
||||||
# fd.write(chunk)
|
fd.write(chunk)
|
||||||
|
|
||||||
logger.info("Done downloading all.zip for {}".format(self))
|
logger.info("Done downloading all.zip for {}".format(self))
|
||||||
|
|
||||||
|
@ -319,9 +319,16 @@ class Task(models.Model):
|
||||||
logger.info("Extracted all.zip for {}".format(self))
|
logger.info("Extracted all.zip for {}".format(self))
|
||||||
|
|
||||||
# Add to database orthophoto
|
# Add to database orthophoto
|
||||||
orthophoto_path = self.assets_path("odm_orthophoto", "odm_orthophoto.tif")
|
orthophoto_path = os.path.realpath(self.assets_path("odm_orthophoto", "odm_orthophoto.tif"))
|
||||||
if os.path.exists(orthophoto_path):
|
if os.path.exists(orthophoto_path):
|
||||||
self.orthophoto = GDALRaster(orthophoto_path, write=True)
|
orthophoto = GDALRaster(orthophoto_path, write=True)
|
||||||
|
|
||||||
|
# We need to transform to 4326 before we can store it
|
||||||
|
# as an offdb raster field
|
||||||
|
orthophoto_4326_path = os.path.realpath(self.assets_path("odm_orthophoto", "odm_orthophoto_4326.tif"))
|
||||||
|
self.orthophoto = orthophoto.transform(4326, 'GTiff', orthophoto_4326_path)
|
||||||
|
|
||||||
|
logger.info("Imported orthophoto {} for {}".format(orthophoto_4326_path, self))
|
||||||
|
|
||||||
self.save()
|
self.save()
|
||||||
except ProcessingException as e:
|
except ProcessingException as e:
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
from django.contrib.gis.gdal import GDALRaster
|
from django.contrib.gis.gdal import GDALRaster
|
||||||
|
from django.db import InternalError
|
||||||
|
from django.db import transaction
|
||||||
|
|
||||||
from .classes import BootTestCase
|
from .classes import BootTestCase
|
||||||
from app.models import Task, Project
|
from app.models import Task, Project
|
||||||
|
@ -13,8 +15,17 @@ class TestApi(BootTestCase):
|
||||||
|
|
||||||
def test_db(self):
|
def test_db(self):
|
||||||
# Make sure we can use PostGIS raster type
|
# Make sure we can use PostGIS raster type
|
||||||
|
raster = GDALRaster(os.path.realpath(os.path.join("app", "fixtures", "orthophoto.tif")), write=True)
|
||||||
|
|
||||||
|
self.assertTrue(raster.srid == 32615)
|
||||||
|
with transaction.atomic():
|
||||||
|
# We cannot store offdb references with SRID different than the one declared (4326)
|
||||||
|
self.assertRaises(InternalError, Task.objects.create, project=Project.objects.latest("created_at"),
|
||||||
|
orthophoto=raster)
|
||||||
|
|
||||||
|
# All OK when we transform to 4326
|
||||||
task = Task.objects.create(project=Project.objects.latest("created_at"),
|
task = Task.objects.create(project=Project.objects.latest("created_at"),
|
||||||
orthophoto=GDALRaster(os.path.join("app", "fixtures", "orthophoto.tif"), write=True))
|
orthophoto=raster.transform(4326))
|
||||||
task.refresh_from_db()
|
task.refresh_from_db()
|
||||||
self.assertTrue(task.orthophoto.srid == 4326)
|
self.assertTrue(task.orthophoto.srid == 4326)
|
||||||
self.assertTrue(task.orthophoto.width == 252) # not original size, warp happened
|
self.assertTrue(task.orthophoto.width == 252) # not original size, warp happened
|
||||||
|
|
Ładowanie…
Reference in New Issue