Java 我正在使用Geotools显示班加罗尔的路线图

Java 我正在使用Geotools显示班加罗尔的路线图,java,geotools,Java,Geotools,我想知道如何突出任何特定的道路。例如,我想将id为1的道路涂成黄色。我正在使用Java显示地图。我找到了如何突出显示ID为1的道路。我遵循的步骤是: //create a filter object Filter filter; //create a datastore object from .shp file FileDataStore store= FileDataStoreFinder.getDataStore(file); SimpleFeatureSource featureSo

我想知道如何突出任何特定的道路。例如,我想将id为1的道路涂成黄色。我正在使用Java显示地图。

我找到了如何突出显示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;
}
//创建一个筛选器对象
过滤器;
//从.shp文件创建数据存储对象
FileDataStore store=FileDataStoreFinder.getDataStore(文件);
SimpleFeatureSource featureSource=store.getFeatureSource();
//我正在使用CQL查询选择ID=1的道路
过滤器=CQL.toFilter(“ID=1”);
//为过滤的要素创建SimpleFeatureCollection对象
SimpleFeatureCollection fc=featureSource.getFeatures(过滤器);
//创建要素迭代器以遍历选定要素
SimpleFeatureIterator iter=fc.features();
//创建一个Set对象来存储featureIdentifiers。
Set id=new HashSet();
//将所选功能添加到IDs
试一试{
while(iter.hasNext()){
SimpleFeature f=iter.next();
add(f.getIdentifier());
System.out.println(“+f.getIdentifier());
}
}
最后{
iter.close();
}
//创建样式对象以存储选定要素的样式
样式样式=createSelectedStyle(ID);
MapContext映射=新的DefaultMapContext();
//显示地图
map.addLayer(featureSource,style);
showMap(map);
//定义createSelectedStyle方法
私有样式createSelectedStyle(设置ID){
规则selectedRule=createRule(所选颜色,所选颜色);
selectedRule.setFilter(ff.id(IDs));
Rule otherRule=createRule(线条颜色、填充颜色);
otherRule.setElseFilter(true);
FeatureTypeStyle fts=sf.createFeatureTypeStyle();
fts.rules().add(selectedRule);
fts.rules().add(其他规则);
Style style2=sf.createStyle();
style2.featureTypeStyles().add(fts);
返回样式2;
}
//定义createRule方法
私有规则createRule(颜色大纲颜色、颜色填充颜色){
symboler-symboler=null;
Fill-Fill=null;//如果使用行,则不需要
笔划笔划=sf.createStroke(ff.literal(outlineColor),ff.literal(线宽));
SymbolR=sf.CreateLineSymbolR(笔划,“几何图形”);
Rule Rule=sf.createRule();
rule.symbolers().add(symbolers);
返回规则;
}

您没有发布任何代码,我们不知道您的进步有多大。我很想给出一个类似于“在第14行,插入以下语句:…”的答案,但这并没有发生。我对GeoTools是新手。我有一个程序,可以读取形状文件,并在屏幕上显示地图。这里选择的常量颜色、线条颜色、填充颜色都是java.awt包中的颜色类型