使用GEOTools对图层的渲染_陈焜浩Arain_新浪博客

本文介绍了如何使用GEOTools对地图图层进行渲染,包括通过JSimpleStyleDialog、SLD文件和自定义Style类三种方法。尽管GEOTools的渲染能力有限,但通过这些方式可以增强地图的表现力和信息传递。文中详细展示了使用JSimpleStyleDialog创建Style的简单示例,以及自定义Style的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

地图最重要的是其精确性,其次就是表现力了。对图层设置不同的渲染方案,会使地图更为容易理解、获取跟多信息,但是非常可惜的是GEOTools提供的渲染能力很弱,其提供的渲染方案为map.addLayer(featureSource, style),我们需要做的是获取style,获取style的方法大概有以下几种:
1、使用JSimpleStyleDialog
2、使用SLD文件
3、自己创建一个Style类

第一种方式很简单,完整的代码如下所示:
     StyleLab_StylePane me = new StyleLab_StylePane();
     me.displayShapefile();
 }
 private void displayShapefile() throws Exception 
 {
  File filepath=new File("E:\\workspace");
  //file获取的是一个完整路径
  File file = JFileDataStoreChooser.showOpenFile("shp", filepath, null);
      if (file == null) 
      { 
          return;
      }
     FileDataStore store = FileDataStoreFinder.getDataStore(file);
     String typename=store.getTypeNames()[0];//这里的typename并没有起到作用
     FeatureSource featureSource = store.getFeatureSource();//typename
     // MapContext
     MapContext map = new DefaultMapContext();
     map.setTitle("样式");
    
     SimpleFeatureType schema = (SimpleFeatureType)featureSource.getSchema();
    
     Style style = JSimpleStyleDialog.showDialog(null, schema);
     map.addLayer(featureSource, style);
     
     JMapFrame.showMap(map);

可以看到,前面都是读取SHP文件的代码,真正使用的Style的就两行,因为JSimpleStyleDialog已经为我们完成了大量的工作。而自己定义一个Style的大概方法则如下:

 private Style createPolygonStyle() 
 {
     // createStroke用于创建线样式
     Stroke stroke = styleFactory.createStroke(
             filterFactory.literal(Color.red),
             filterFactory.literal(1),
             filterFactory.literal(0.5));

     // createFill用于创建面样式
     Fill fill = styleFactory.createFill(
             filterFactory.literal(Color.CYAN),
             filterFactory.literal(0.5));

     PolygonSymbolizer sym = styleFactory.createPolygonSymbolizer(stroke, fill, null);
     Rule rule = styleFactory.createRule();
     rule.symbolizers().add(sym);
     FeatureTypeStyle fts = styleFactory.createFeatureTypeStyle(new Rule[]{rule});
     Style style = styleFactory.createStyle();
     style.featureTypeStyles().add(fts);
     return style;
 }

当然,这里的一些方法被重载后除了颜色、线条粗细、透明度外还会拥有更多的样式设置参数,不过整体来说表表现力还是略渣。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值