Я разрабатываю приложение с использованием ArcGIS Runtime SDK для Java и пытаюсь вернуть маршрут от точки до ближайшего объекта (например, больницы), используя ArcGIS StreetMap Premium (SMP) mmpk
Я создал параметры для ClosestFacilityTask (cft) и загрузил файл базы геоданных SMP mmpk, а затем создал параметр запроса типа «Больница» для таблицы GeodatabaseFeatureTable «Landuse_FacilityAreas_g2_288k» :
final ListenableFuture<ClosestFacilityParameters> parameters = cft.createDefaultParametersAsync();
parameters.addDoneListener(() -> {
try {
ClosestFacilityParameters cfp = parameters.get();
cfp.setReturnRoutes(true);
cfp.setReturnDirections(true);
Point fromMapPoint = new Point(103.847376, 1.390431, SpatialReference.create(4326));
Incident incident = new Incident(fromMapPoint);
cfp.setIncidents(Arrays.asList(incident));
Geodatabase geoDB = new Geodatabase("D:\\Map Data\\Singapore\\p14\\asiapacific.geodatabase");
geoDB.loadAsync();
geoDB.addDoneLoadingListener(() -> {
QueryParameters qp = new QueryParameters();
ArcGISFeatureTable facilityTable = geoDB.getGeodatabaseFeatureTable("Landuse_FacilityAreas_g2_288k");
qp.setWhereClause("Type='Hospital'");
cfp.setFacilities(facilityTable, qp);
ListenableFuture<ClosestFacilityResult> solveResult = cft.solveClosestFacilityAsync(cfp);
solveResult.addDoneListener(() -> {
try {
ClosestFacilityResult cfr = solveResult.get();
for (int i = 0; i < cfr.getIncidents().size(); i++) {
List<Integer> ranked = cfr.getRankedFacilityIndexes(i);
for (int x : ranked) {
ClosestFacilityRoute route = cfr.getRoute(x, i);
graphicsOverlay.getGraphics().add(new Graphic(route.getRouteGeometry(), new SimpleLineSymbol(SimpleLineSymbol.Style.DASH, 0xFF0000FF, 3)));
}
}
} catch (Exception e) {
e.printStackTrace();
}
});
});
} catch (Exception e) {
e.printStackTrace();
}
});
Однако он возвращает следующую ошибку: SQL ошибка или отсутствует база данных: такого столбца нет: Введите
Может ли кто-нибудь помочь мне в этом? Большое спасибо!
Джеймс