Мне нужно загрузить файл GPX на карту, по этой причине мне нужно проанализировать файл и получить из него трек -точки, после того, как это создало Linestring или MultiLinesting и заполняет его на карте, основная проблема заключается в том, что он заполнен на карте на неправильном месте, поскольку в Instnace часть маршрута может быть на озере или на море, что не так,
у кого -то была сходная проблема? Если да, то как вы справились с этим? Местоположение WEERD и странная культура не правильно < /li>
< /ol>
Mathtransform имела аналогичную логику < /p>
try {
// Define the source and target coordinate systems
CoordinateReferenceSystem sourceCRS = CRS.decode("EPSG:3857"); // Example: Web Mercator
CoordinateReferenceSystem targetCRS = CRS.decode("EPSG:4326"); // WGS84 (Leaflet uses this)
CoordinateOperation operation = CRS.findOperation(sourceCRS, targetCRS, null);
transformToWGS84 = operation.getMathTransform();
} catch (FactoryException e) {
log.error("Error initializing coordinate transformation", e);
}
< /code>
type here`import org.geotools.geometry.jts.JTS;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opengis.geometry.DirectPosition;
import org.opengis.geometry.coordinate.LineString;
import org.opengis.geometry.geometryfactory.GeometryFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
public class MapProcessor {
private static final Logger log = LoggerFactory.getLogger(MapProcessor.class);
private final GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();
private final List geometries = new ArrayList();
private Polygon cityBoundary; // The cropping boundary
public MapProcessor(Polygon cityBoundary) {
this.cityBoundary = cityBoundary;
}
// This method processes a list of TrackPoints and creates the corresponding path.
public void generatePath(List trackPoints) {
if (trackPoints == null || trackPoints.isEmpty()) {
log.warn("No TrackPoints provided.");
return;
}
List pathCoords = new ArrayList();
for (TrackPoint trackPoint : trackPoints) {
if (isValidCoordinate(trackPoint.getLon(), trackPoint.getLat())) {
// Create DirectPosition from TrackPoint data (longitude and latitude)
DirectPosition pos = geometryFactory.createDirectPosition(new double[]{trackPoint.getLon(), trackPoint.getLat()});
pathCoords.add(pos);
}
}
if (pathCoords.size() < 2) {
log.warn("Not enough valid points to create a path.");
return;
}
LineString pathLine = geometryFactory.createLineString(pathCoords);
log.info("Original LineString created with {} points.", pathCoords.size());
pathLine = validatePath(pathLine);
if (pathLine == null) {
log.warn("Path validation failed.");
return;
}
pathLine = cropPath(pathLine);
if (pathLine == null) {
log.warn("Path is outside the city and has been removed.");
return;
}
geometries.add(pathLine);
}
// Validate if the coordinate is within the acceptable range for longitude and latitude.
private boolean isValidCoordinate(double lon, double lat) {
return lon >= -180 && lon = -90 && lat
Подробнее здесь: https://stackoverflow.com/questions/794 ... e-on-a-map
В настоящее время не может найти маршрут для походов GPX на карте ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение