Version 1.3.3 build 4827 (64 bit)
Win 10
Hello,
Could someone tell me what I have done wrong?
I am getting the following error;
Traceback (most recent call last):
2017-09-22 09:05:35 File "E:/PhotoScan_Scripts/photoscan_process_dji_p4p_ver13.py", line 182, in <module>
2017-09-22 09:05:35 chunk.buildOrthomosaic(surface=PhotoScan.DataSource.PointCloudData, blending=PhotoScan.BlendingMode.MosaicBlending, color_correction=True, fill_holes=True)
2017-09-22 09:05:35 RuntimeError: Unsupported data source
This is the offending line;
chunk.buildOrthomosaic(surface=PhotoScan.DataSource.PointCloudData, blending=PhotoScan.BlendingMode.MosaicBlending, color_correction=True, fill_holes=True)
And this is the full script;
import PhotoScan
import os
global doc
#Used to loop through folders
#Add comma delimited list of project folders below
collection = ['test_1','test_2']
for project_name in collection:
doc = PhotoScan.app.document
print('project_path')
drive = 'E'
project_path = os.path.normpath(drive + ":/" + project_name + "/" + project_name + ".psx")
path_photos = os.path.normpath(drive + ":/" + project_name + "/JPEG")
output_path = os.path.normpath(drive + ":/" + project_name + "/")
print(project_path)
print(path_photos)
print(output_path)
# Create project file
doc.save(project_path, chunks = doc.chunks )
doc.open(project_path)
# Remove Chunks if they exist (they are in the order 1 and 0 for a reason).
print('Remove chunks if exist')
if len(doc.chunks):
doc.chunk = doc.chunks[1]
chunk = doc.chunk
doc.remove(chunk)
if len(doc.chunks):
doc.chunk = doc.chunks[0]
chunk = doc.chunk
doc.remove(chunk)
print('Name the chunk for dense cloud')
chunk = PhotoScan.app.document.addChunk()
chunk.label = project_name + "_dense_cloud"
print('Add Photos')
image_list = [
os.path.join(path_photos, path)
for path in os.listdir(path_photos)
if path.lower().endswith(("jpg", "jpeg", "tif", "png","JPG","JPEG","TIF",""))
]
print(image_list)
chunk.addPhotos(image_list)
print('Load Exif')
chunk.loadReferenceExif()
print('Set COORD SYS to WGS84')
coord_system = PhotoScan.CoordinateSystem('EPSG::4326')
chunk.crs = coord_system
print('Match Photos')
chunk.matchPhotos(accuracy=PhotoScan.HighAccuracy, preselection=PhotoScan.ReferencePreselection, tiepoint_limit=40000)
print('Align Cameras')
chunk.alignCameras()
print('Optimize Cameras')
chunk.optimizeCameras()
print('Build Dense Point Cloud')
#UltraQuality, HighQuality, MediumQuality, LowQuality, LowestQuality
#NoFiltering, MildFiltering, ModerateFiltering, AggressiveFiltering
chunk.buildDenseCloud(quality=PhotoScan.HighQuality, filter=PhotoScan.NoFiltering)
print('Copy chunk for sparse cloud processing.')
chunk.copy()
doc.chunk = doc.chunks[1]
chunk = doc.chunk
chunk.label = project_name + "_sparse_cloud"
print('Return to the chunk for dense cloud processing')
doc.chunk = doc.chunks[0]
chunk = doc.chunk
#print('Classify Ground Points')
#chunk.classifyGroundPoints(max_angle=15.0, max_distance=4.0, cell_size=5.0)
#print('Export Point Cloud')
#chunk.exportPoints(output_path + "/POINT_CLOUD/" + project_name + "_pointcloud.txt", source=PhotoScan.DenseCloudData, format=PhotoScan.PointsFormatXYZ, blockw=1000, blockh=1000)
# -------------------------------------------------------------------
# Create Dense Cloud Chunk
# -------------------------------------------------------------------
'''
print('Build Model (Mesh) using dense cloud')
chunk.buildModel(surface=PhotoScan.HeightField, source=PhotoScan.DenseCloudData, face_count=PhotoScan.MediumFaceCount, interpolation=PhotoScan.EnabledInterpolation)
print('Close Holes')
chunk.model.closeHoles(level = 50)
print('Mapping Mode')
chunk.buildUV(mapping=PhotoScan.OrthophotoMapping)
print('Build Texture')
chunk.buildTexture(blending=PhotoScan.MosaicBlending, size=8192)
print('Save project')
doc.save()
#print('Export Report')
chunk.exportReport(output_path + project_name + "_dense_cloud.pdf")
'''
# -------------------------------------------------------------------
# Create Sparse Cloud Chunk
# -------------------------------------------------------------------
print('Make new chunk %_sparse_cloud active')
doc.chunk = doc.chunks[1]
chunk = doc.chunk
#print('Build Dense Point Cloud')
#We have copied the Dense Point Cloud from the Chunk above so we dont have to process it again.
#UltraQuality, HighQuality, MediumQuality, LowQuality, LowestQuality
#NoFiltering, MildFiltering, ModerateFiltering, AggressiveFiltering
#chunk.buildDenseCloud(quality=PhotoScan.HighQuality, filter=PhotoScan.NoFiltering)
print('Build Model (Mesh) using sparse cloud (pointCloudData = sparse cloud)')
chunk.buildModel(surface=PhotoScan.HeightField, source=PhotoScan.PointCloudData, face_count=PhotoScan.MediumFaceCount, interpolation=PhotoScan.EnabledInterpolation)
print('Save project')
doc.save()
print('Close Holes')
chunk.model.closeHoles(level = 50)
print('Mapping Mode')
chunk.buildUV(mapping=PhotoScan.OrthophotoMapping)
print('Build Texture')
chunk.buildTexture(blending=PhotoScan.MosaicBlending, size=8192)
print('Save project')
doc.save()
print('Build Dem using sparse cloud (PointCloudData)')
chunk.buildDem(source=PhotoScan.PointCloudData, interpolation=PhotoScan.EnabledInterpolation)
print('Export Dem to GDA94 Zone 50')
chunk.exportDem(output_path +'/DEM/'+ project_name + "_DEM_DenseCloud_NoFiltering.tif",image_format=PhotoScan.ImageFormatTIFF, projection=PhotoScan.CoordinateSystem('EPSG::28350'))
print('Export INPHO file to GDA94 Zone 50 ')
chunk.exportCameras(output_path + project_name + "_inpho_EPSG28350.prj", format=PhotoScan.CamerasFormatInpho, projection=PhotoScan.CoordinateSystem('EPSG::28350'), rotation_order=PhotoScan.RotationOrderXYZ)
print('Build Orthomosaic')
chunk.buildOrthomosaic(surface=PhotoScan.DataSource.PointCloudData, blending=PhotoScan.BlendingMode.MosaicBlending, color_correction=True, fill_holes=True)
print('Export Orthomosaic to GDA94 Zone 50')
chunk.exportOrthomosaic(output_path +'/ORTHO/'+ project_name + "_Ortho_SparseCloud_NoFiltering_EPSG28350.tif", image_format=PhotoScan.ImageFormatTIFF, projection=PhotoScan.CoordinateSystem('EPSG::28350'))
print('Export Report')
chunk.exportReport(output_path + project_name + "_sparse_cloud.pdf")
print('Save project')
doc.save()
The PhotoScan Python reference states the following;
class PhotoScan.DataSource
Data source in [PointCloudData, DenseCloudData, DepthMapsData, ModelData, TiledModelData, Elevation-Data, OrthomosaicData]
Regards
Ben