-4
특정 도로를 강조하는 방법을 알고 싶습니다. 예를 들어, id = 1 인 노란색 도로를 색칠하고 싶습니다. Java를 사용하여지도를 표시하고 있습니다.방갈로의 도로지도를 표시하는 데 Geotools를 사용합니다.
특정 도로를 강조하는 방법을 알고 싶습니다. 예를 들어, id = 1 인 노란색 도로를 색칠하고 싶습니다. Java를 사용하여지도를 표시하고 있습니다.방갈로의 도로지도를 표시하는 데 Geotools를 사용합니다.
ID = 1 인 도로를 강조 표시하는 방법을 찾았습니다. 내가 수행 한 단계는 다음과 같습니다.
//create a filter object
Filter filter;
//create a datastore object from .shp file
FileDataStore store= FileDataStoreFinder.getDataStore(file);
SimpleFeatureSource featureSource=store.getFeatureSource();
//I am using CQL query to select the road that is ID=1
filter=CQL.toFilter("ID=1");
//create a SimpleFeatureCollection object for the filtered features
SimpleFeatureCollection fc=featureSource.getFeatures(filter);
//create a feature iterator to traverse through the selected features
SimpleFeatureIterator iter=fc.features();
//create a Set object to store the featureIdentifiers.
Set<FeatureId> IDs=new HashSet<FeatureId>();
//add the selected features to IDs
try{
while(iter.hasNext()){
SimpleFeature f=iter.next();
IDs.add(f.getIdentifier());
System.out.println(" "+f.getIdentifier());
}
}
finally{
iter.close();
}
//create style object to store style of selected features
Style style=createSelectedStyle(IDs);
MapContext map=new DefaultMapContext();
//show the map
map.addLayer(featureSource,style);
JMapFrame.showMap(map);
//defining the createSelectedStyle method
private Style createSelectedStyle(Set<FeatureId> IDs) {
Rule selectedRule = createRule(SELECTED_COLOUR, SELECTED_COLOUR);
selectedRule.setFilter(ff.id(IDs));
Rule otherRule = createRule(LINE_COLOUR, FILL_COLOUR);
otherRule.setElseFilter(true);
FeatureTypeStyle fts = sf.createFeatureTypeStyle();
fts.rules().add(selectedRule);
fts.rules().add(otherRule);
Style style2 = sf.createStyle();
style2.featureTypeStyles().add(fts);
return style2;
}
//defining the createRule method
private Rule createRule(Color outlineColor, Color fillColor) {
Symbolizer symbolizer = null;
Fill fill = null;//not required if working with line
Stroke stroke = sf.createStroke(ff.literal(outlineColor), ff.literal(LINE_WIDTH));
symbolizer = sf.createLineSymbolizer(stroke, "the_geom");
Rule rule = sf.createRule();
rule.symbolizers().add(symbolizer);
return rule;
}
여기 SELECTED_COLOR, LINE_COLOUR, FILL_COLOUR은 java.awt 패키지의 Color 유형입니다. – sandeep
귀하의 노력은 무엇입니까? –
코드를 게시하지 않았으므로 어느 정도 진행되었는지 알 수 없습니다. 나는 "14 행에서 다음 문장을 삽입하십시오 :"와 같은 대답을하고 싶습니다. 그러나 그것은 일어나지 않습니다. – f1sh
저는 GeoTools를 처음 사용합니다. 모양 파일을 읽고 화면에지도를 표시하는 프로그램이 있습니다 – sandeep