Status: concept
Laatst bijgewerkt: 4 december 2023 | Azure pipeline voorbeeld toegevoegd
In de basis volgen we in deze handleiding de standaard handleiding van Tyler. Hieronder volgt echter nog wat aanvullende informatie en aandachtspunten.
Voorwaarden om Tyler te kunnen gebruiken:
- Brondata is beschikbaar als CityJSONFeatures, dat wil zeggen losse bestanden voor de verschillende objecten;
- Vertices van de geometrie zijn in centimeters en ints (geen floats);
- LOD’s zijn strings (geen floats).
- Download de GeoFlow bundle vanaf de release page
- https://github.com/geoflow3d/geoflow-bundle/releases
- Installeer deze op de standaard locatie, C:\Program Files\Geoflow
- Download Tyler vanaf de release page
- https://github.com/3DGI/tyler/releases
- Kopieer de inhoud van de zip naar een willkeurige locatie
- Tyler maakt gebruik van een metadata bestand, metadata.city.json
- Hierin worden verschillende instellingen gedefinieerd die tijdens het genereren van de tileset gebruikt worden. Wat deze instellingen precies moeten zijn is per geval verschillend.
- Speciale aandacht gaat uit naar het onderdeel Scale onder Transform. Het resultaat van de tool is sterk afhankelijk van de input. Een veel voorkomend probleem is dat de scale niet goed staat, dit heeft te maken met de notatie van de vertices (zie stap 1, Voorwaarden om Tyler te kunnen gebruiken). Als de vertices bijvoorbeeld in meter staan, kunnen deze tot centimers gecorrigeerd worden met deze scale.
Het is echter aan te raden om te zorgen dat de brondata al in centimeters genoteerd is.
metadata.city.json
{
"type": "CityJSON",
"version": "1.1",
"CityObjects": {},
"vertices": [],
"transform": {
"scale": [
0.01,
0.01,
0.01
],
"translate": [
0.0,
0.0,
0.0
]
},
"metadata": {
"identifier": "4381bbca-a936-4df9-902f-1683082697cd-blaat",
"referenceDate": "2021-12-10",
"referenceSystem": "https://www.opengis.net/def/crs/EPSG/0/7415"
},
"+metadata-extended": {
"thematicModels": [
"LandUse",
"Building",
"BuildingPart",
"GenericCityObject",
"Bridge",
"Road",
"WaterBody",
"PlantCover"
],
"fileIdentifier": "30dz1_04.json"
},
"extensions": {
"MetadataExtended": {
"url": "https://raw.githubusercontent.com/cityjson/metadata-extended/0.5/metadata-extended.ext.json",
"version": "0.5"
},
"Generic": {
"url": "https://cityjson.org/extensions/download/generic.ext.json",
"version": "1.0"
}
}
}
GitHub – CesiumGS/3d-tiles-tools
OPTIONEEL
Om Tyler via Docker te kunnen gebruiken, volg je deze stappen.
- SSH key aanmaken => ssh-keygen -t ed25519 -C “your_email@example.com“ (file en passhrase leeg houden)
- Key inhoud kopieren => pbcopy < ~/.ssh/id_ed25519.pub / clip < ~/.ssh/id_ed25519.pub (of gewoon uit het bestand plukken)
- Key aan GitHub toevoegen => https://docs.github.com/en/
authentication/connecting-to- github-with-ssh/adding-a-new- ssh-key-to-your-github-account - Repo clonen => git clone git@github.com:3DGI/tyler.git
- In cloned tyler folder, submodules updaten => git submodule update –init –recursive
-
In tyler folder => docker build -f docker/tyler.dockerfile .
Vervolgens kun je Tyler runnen met de gewenste instellingen. Bijvoorbeeld
- docker run -it -e RUST_LOG=debug -e PROJ_DATA=/usr/local/share/proj -v %cd%:/data –rm tylerdocker tyler
Dit vraagt initieel iets meer tijd om op te starten, voordeel is dat je bijvoorbeeld lokaal geen extra software hoeft te installeren.
Bonus: Azure pipeline voorbeeld
trigger:
- none
pool:
vmImage: ubuntu-latest
steps:
- script: |
docker run -e RUST_LOG=debug -e PROJ_DATA=/usr/local/share/proj -v "$(Build.Repository.LocalPath):/data" --rm 3dgi/tyler tyler \
--metadata /data/metadata.city.json \
--features /data/input \
--output /data/output \
--3dtiles-implicit \
--object-type PlantCover \
--object-type Building \
--object-type BuildingPart \
--object-type BuildingInstallation \
--object-attribute gebouwnummer:string \
--geometric-error-above-leaf 1500 \
--3dtiles-metadata-class buildings \
--grid-minz=-15 \
--grid-maxz=400
displayName: 'Run Tyler Docker'
- task: CopyFiles@2
inputs:
SourceFolder: '$(Build.SourcesDirectory)/output'
targetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
- task: AzureCLI@2
inputs:
azureSubscription: 'your-subscription'
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: 'az storage blob upload-batch -d "tylerbuilds/$(Build.BuildId)" --account-name "your-storage-account" -s "$(Build.ArtifactStagingDirectory)"'
displayName: 'Upload files to $(Build.BuildId)'