You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
2.4 KiB

package com.dji.sdk.cloudapi.map;
import com.dji.sample.map.model.enums.ElementTypeEnum;
import com.dji.sdk.exception.CloudSDKErrorEnum;
import com.dji.sdk.exception.CloudSDKException;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author sean
* @version 0.2
* @date 2021/11/30
*/
@Schema(description = "polygon geometry")
public class ElementPolygonGeometry extends ElementGeometryType {
@Schema(example = "Polygon")
@NotNull
private String type = ElementTypeEnum.POLYGON.getDesc();
@Schema(example = "[[[113.943109, 22.577378]]]")
@NotNull
@Size(min = 1, max = 1)
private Double[][][] coordinates;
public ElementPolygonGeometry() {
super();
}
@Override
public List<ElementCoordinate> convertToList() {
if (this.coordinates[0].length < 3) {
throw new CloudSDKException(CloudSDKErrorEnum.INVALID_PARAMETER);
}
List<ElementCoordinate> coordinateList = new ArrayList<>();
for (Double[] coordinate : this.coordinates[0]) {
coordinateList.add(new ElementCoordinate()
.setLongitude(coordinate[0])
.setLatitude(coordinate[1]));
}
return coordinateList;
}
@Override
public void adapterCoordinateType(List<ElementCoordinate> coordinateList) {
if (CollectionUtils.isEmpty(coordinateList) || coordinateList.size() < 3) {
throw new CloudSDKException(CloudSDKErrorEnum.INVALID_PARAMETER);
}
this.coordinates = new Double[1][coordinateList.size()][2];
for (int i = 0; i < this.coordinates[0].length; i++) {
this.coordinates[0][i][0] = coordinateList.get(i).getLongitude();
this.coordinates[0][i][1] = coordinateList.get(i).getLatitude();
}
}
@Override
public String toString() {
return "ElementPolygonGeometry{" +
"coordinates=" + Arrays.toString(coordinates) +
'}';
}
public Double[][][] getCoordinates() {
return coordinates;
}
public ElementPolygonGeometry setCoordinates(Double[][][] coordinates) {
this.coordinates = coordinates;
return this;
}
@Override
public String getType() {
return type;
}
}