java 图层_java – 在Geotools中向现有图层添加功能

我向Geotools MapPane添加了一个图层,包含各种WKT String功能.图层显示正确.现在,只需单击UI上的按钮,我就想为此图层添加另一个功能.

最初,我创建图层并使用以下内容显示它:

List list = featuresFromWkt(wktString, name); //method name explains what it does..

ListFeatureCollection col = new ListFeatureCollection(getFeatureType(), list);

Color color = Color.BLUE;

Style style = SLD.createPolygonStyle(color, color.brighter(), 0.5f);

FeatureLayer layer = new FeatureLayer(col, style);

layer.setVisible(true);

layer.setTitle(name);

mapContent.layers().add(layer)

现在,为了向图层添加内容,我从内容中获取图层,使用:

FeatureLayer layer = (FeatureLayer) mapContent.layers().get(0);

我现在可以使用layer.getSimpleFeatureSource()来检索源代码,但似乎没有办法将此源代码转换回我可以调用.addFeature(someNewFeature)的东西,以便向地图添加内容.

我可以保留对ListFeatureCollection的引用并使用它来添加新功能,但我更愿意只使用mapConent.layers.get(layerNumber)方法,然后使用该层添加内容.

到目前为止,我看到的所有样本都只添加了具有新功能的另一层.我不想添加另一个图层,而只是向现有图层添加内容,其内容位于内存中.我在这里错过了什么吗?有没有我不知道的GeoTools课程?

基本想法,以防上面链接的邮件列表存档在某个时间点变得不可用:

>创建包含您的功能的功能集(最初可能为空)

>将此要素集添加到地图图层

>稍后在功能集中添加功能.

根据邮件列表上的声明:“当您向集合添加功能时,地图窗格应自动重绘(有一系列事件从要素集发送到地图图层到图层列表到地图窗格)”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我可以提供一段Java代码,它可以帮助您在图层中显示Landsat影像的每一月:import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List;import javax.imageio.ImageIO;import org.geotools.coverage.grid.GridCoverage2D; import org.geotools.gce.geotiff.GeoTiffReader; import org.geotools.geometry.DirectPosition2D; import org.opengis.referencing.crs.CoordinateReferenceSystem;public class Landsat {public static void main(String[] args) throws IOException { //Define the Landsat image files File[] files = { new File("january_landsat.tif"), new File("february_landsat.tif"), new File("march_landsat.tif"), new File("april_landsat.tif"), new File("may_landsat.tif"), new File("june_landsat.tif"), new File("july_landsat.tif"), new File("august_landsat.tif"), new File("september_landsat.tif"), new File("october_landsat.tif"), new File("november_landsat.tif"), new File("december_landsat.tif") }; //Define the parameters CoordinateReferenceSystem crs = null; double[] pixel_size = {0.0, 0.0}; DirectPosition2D ulCorner = null; List<GridCoverage2D> coverages = new ArrayList<GridCoverage2D>(); //Create the GeoTiffReader GeoTiffReader reader = new GeoTiffReader(files[0]); //Iterate through each file for (File f : files) { //Read in the image reader = new GeoTiffReader(f); //Get the CRS and pixel size from the first image if (crs == null) { crs = reader.getCrs(); pixel_size = reader.getMetadata().getModelGridToWorldTransform().getScaleX(); ulCorner = new DirectPosition2D(crs, 0, 0); } //Get the coverage GridCoverage2D coverage = reader.read(null); coverages.add(coverage); } //Create the output image ImageIO.write(GeoTiffReader.createMultiLayerImage(coverages, ulCorner, pixel_size), "png", new File("output_image.png")); }}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值