Skip to content

Commit

Permalink
Fix geosolutions-it#10000 adding geodesic lines to 3d measures
Browse files Browse the repository at this point in the history
  • Loading branch information
MV88 committed Mar 8, 2024
1 parent 6ba87df commit 2fee0d3
Show file tree
Hide file tree
Showing 7 changed files with 28 additions and 3 deletions.
20 changes: 17 additions & 3 deletions web/client/components/map/cesium/DrawMeasureSupport.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ import {
convertUom,
mapUomAreaToLength
} from '../../../utils/MeasureUtils';
import {
calculateDistance
} from '../../../utils/CoordinatesUtils';
import {
getCesiumColor,
createPolylinePrimitive,
Expand Down Expand Up @@ -387,7 +390,7 @@ function DrawMeasureSupport({
}
}, [clearId]);

function featureToToPrimitives({
function featureToPrimitives({
coordinates,
feature,
measureType
Expand Down Expand Up @@ -456,6 +459,15 @@ function DrawMeasureSupport({
infoLabelText = infoLabelFormat(convertMeasure(unitOfMeasure, feature.properties.length, 'm'));
}
break;
case MeasureTypes.LENGTH:
if (coordinates.length > 1) {
const geodesicDistance = calculateDistance(feature.geometry.coordinates);
staticPrimitivesCollection.current.add(createPolylinePrimitive({ ...style?.line, coordinates: [...coordinates], geodesic: true }));
segments = addSegmentsLabels(staticLabelsCollection.current, coordinates, MeasureTypes.LENGTH);
infoLabelText = infoLabelFormat(convertMeasure(unitOfMeasure, geodesicDistance, 'm'));
}
break;

case MeasureTypes.AREA_3D:
if (coordinates.length > 2) {
staticPrimitivesCollection.current.add(createPolygonPrimitive({ ...style?.area, coordinates: [...coordinates] }));
Expand Down Expand Up @@ -515,7 +527,7 @@ function DrawMeasureSupport({

const newFeatures = features.map((feature) => {
const coordinates = measureFeatureToCartesianCoordinates(feature);
return featureToToPrimitives({
return featureToPrimitives({
coordinates,
feature,
measureType: feature?.properties?.measureType
Expand All @@ -530,7 +542,7 @@ function DrawMeasureSupport({

function updateStaticCoordinates(coordinates, { feature }) {

const updatedFeature = featureToToPrimitives({
const updatedFeature = featureToPrimitives({
coordinates,
feature,
measureType: type
Expand Down Expand Up @@ -696,6 +708,7 @@ function DrawMeasureSupport({
case MeasureTypes.POINT_COORDINATES:
return 'Point';
case MeasureTypes.ANGLE_3D:
case MeasureTypes.LENGTH:
case MeasureTypes.POLYLINE_DISTANCE_3D:
return 'LineString';
case MeasureTypes.SLOPE:
Expand Down Expand Up @@ -727,6 +740,7 @@ function DrawMeasureSupport({
map={map}
active={active}
geometryType={getGeometryType()}
geodesic={type === MeasureTypes.LENGTH }
onDrawStart={handleDrawUpdate}
onMouseMove={handleDrawUpdate}
onDrawing={handleDrawUpdate}
Expand Down
6 changes: 6 additions & 0 deletions web/client/components/map/cesium/MeasurementSupport.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ function MeasurementSupport({
onUpdateFeatures,
onChangeUnitOfMeasure,
tools = [
MeasureTypes.LENGTH,
MeasureTypes.POLYLINE_DISTANCE_3D,
MeasureTypes.AREA_3D,
MeasureTypes.POINT_COORDINATES,
Expand Down Expand Up @@ -101,6 +102,10 @@ function MeasurementSupport({
unitsOfMeasure={unitsOfMeasure}
onUpdateCollection={(collection) => onUpdateFeatures(collection?.features || [])}
tooltipLabels={{
[MeasureTypes.LENGTH]: {
start: getMessageById(messages, 'measureComponent.tooltipPolylineDistance3DStart'),
end: getMessageById(messages, 'measureComponent.tooltipPolylineDistance3DEnd')
},
[MeasureTypes.POLYLINE_DISTANCE_3D]: {
start: getMessageById(messages, 'measureComponent.tooltipPolylineDistance3DStart'),
end: getMessageById(messages, 'measureComponent.tooltipPolylineDistance3DEnd')
Expand All @@ -124,6 +129,7 @@ function MeasurementSupport({
}
}}
infoLabelsFormat={{
[MeasureTypes.LENGTH]: value => value,
[MeasureTypes.POLYLINE_DISTANCE_3D]: value => value,
[MeasureTypes.AREA_3D]: value => value,
[MeasureTypes.POINT_COORDINATES]: (value, { latitude, longitude } = {}) =>
Expand Down
1 change: 1 addition & 0 deletions web/client/translations/data.de-DE.json
Original file line number Diff line number Diff line change
Expand Up @@ -858,6 +858,7 @@
"saveMeasure": "Speichern Sie die Messungen in Notizen / Zeichnungen",
"resetTooltip": "Messung entfernen",
"addAsLayer": "Als Ebene hinzufügen",
"lengthMeasure": "Messen Sie die geodätische Entfernung im 3D-Raum",
"polylineDistance3DMeasure": "Entfernung im 3D-Raum messen",
"area3DMeasure": "Fläche im 3D-Raum messen",
"pointCoordinatesMeasure": "Punktkoordinaten messen",
Expand Down
1 change: 1 addition & 0 deletions web/client/translations/data.en-US.json
Original file line number Diff line number Diff line change
Expand Up @@ -819,6 +819,7 @@
"exportToGeoJSON": "Export to GeoJSON",
"resetTooltip": "Clear measures",
"addAsLayer": "Add as layer",
"lengthMeasure": "Measure geodesic distance in 3D space",
"polylineDistance3DMeasure": "Measure distance in 3D space",
"area3DMeasure": "Measure area in 3D space",
"pointCoordinatesMeasure": "Measure point coordinates",
Expand Down
1 change: 1 addition & 0 deletions web/client/translations/data.es-ES.json
Original file line number Diff line number Diff line change
Expand Up @@ -819,6 +819,7 @@
"saveMeasure": "Guarde las medidas en la anotación",
"resetTooltip": "Medidas claras",
"addAsLayer": "Agregar como capa",
"lengthMeasure": "Medir la distancia geodésica en el espacio 3D",
"polylineDistance3DMeasure": "Medir distancia en el espacio 3D",
"area3DMeasure": "Medir área en espacio 3D",
"pointCoordinatesMeasure": "Medir las coordenadas del punto",
Expand Down
1 change: 1 addition & 0 deletions web/client/translations/data.fr-FR.json
Original file line number Diff line number Diff line change
Expand Up @@ -819,6 +819,7 @@
"saveMeasure": "Enregistrer les mesures dans l'annotation",
"resetTooltip": "Effacer les mesures",
"addAsLayer": "Ajouter comme couche",
"lengthMeasure": "Mesurer la distance géodésique dans l'espace 3D",
"polylineDistance3DMeasure": "Mesurer la distance dans l'espace 3D",
"area3DMeasure": "Mesurer la zone dans l'espace 3D",
"pointCoordinatesMeasure": "Mesurer les coordonnées du point",
Expand Down
1 change: 1 addition & 0 deletions web/client/translations/data.it-IT.json
Original file line number Diff line number Diff line change
Expand Up @@ -819,6 +819,7 @@
"saveMeasure": "Salva le misure nell'annotazione",
"resetTooltip": "Rimuovi Misurazioni",
"addAsLayer": "Aggiungi come livello",
"lengthMeasure": "Misurare la distanza geodesica nello spazio 3D",
"polylineDistance3DMeasure": "Misurare la distanza nello spazio 3D",
"area3DMeasure": "Misurare l'area nello spazio 3D",
"pointCoordinatesMeasure": "Misurare le coordinate di un punto",
Expand Down

0 comments on commit 2fee0d3

Please sign in to comment.