GDAL/OGR 地理要素样式(四)

1 符号工具参数

应用的地理要素类型: 

· 点:符号在点上的位置

· 线:沿线放置符号,在每俩个点之间,或者等间距放置。

· 多边形:在多边形轮廓内放置符号。

符号工具参数当前列表。记录这个列表最新扩展,所有参数都是可选的:

参数名称

描述

id

符号名称或者ID – 符号名称或者符号的逗号分隔列表。这些名称在ids的逗号分隔列表中是可以找到的,在目标系统中是唯一的

符号ids可以是系统指定的ids或者预定义的OGR符号ids。这个id参数允许符号逗号列表的末尾包含一个OGR符号列表中的一个,因为应用程序依赖于解读系统指定的dis,如果不识别,则使用OGR符号。

下面是当前OGR符号ids列表(可扩展):

· ogr-sym-0: 十字 (+) 

· ogr-sym-1: 斜十字 (X) 

· ogr-sym-2: 圆(不填充) 

· ogr-sym-3: 圆(填充) 

· ogr-sym-4: 正方形 (不填充) 

· ogr-sym-5: 正方形(填充) 

· ogr-sym-6: 三角形(不填充) 

· ogr-sym-7: 三角形(填充) 

· ogr-sym-8: 星星 (不填充) 

· ogr-sym-9: 星星(填充) 

· ogr-sym-10: vertical bar (can be rotated using angle attribute to produce diag bar) 

· ??? should any other common be included ??? 

与画笔ids相似,特定系统符号ids是非常合适特定系统去创建符号。 Ids应该以系统的名称为前缀,然后是破折号(-),下面的任何信息都是对那个系统有意义的(如:一个数字,一个名称,一个文件名等)。

下面的例子将使用普通的特定系统符号ids:

· Windows BMP符号"bmp-filename.bmp" 

· ??? 其他矢量符号,WMF等等 ??? 

a

角度 – 符号的旋转角度(以度为单位, 逆时针方向) 

c

符号颜色 - 16进制表达 (#RRGGBB[AA]) 

[AA]最后俩个数表示通道的值(也就是透明度),0表示透明的,FF表示完全不透明的。 默认值是FF(不透明的)。

默认符号颜色: 黑色 (c:#000000) 

例如: SYMBOL(c:#FF0000) 

预先定义的颜色名称可以在以后的版本中使用

o

符号轮廓线颜色 - 16进制表达(#RRGGBB[AA]),没有设置则没有轮廓线 

s

尺寸或者缩放因子 – 有单位或者无单位的数值。 

如果单位是指定的,那么使用绝对单位绘制符号。

如果没有指定单位,那么它为相对于默认符号大小的相对比例。

dx, dy

XY方向的偏移量基于符号插入点位置

应用于点, and to symbols placed at each vertex of a polyline.

ds, dp, di

间隔 - 沿线方向符号隔开

"ds"沿线放置符号的步长。

默认,符号应用到一个线性要素,但是设置"ds"将引起沿线方向等距离的布局发生变化。

"ds"应用到点要素上没有效果。

"dp"可以联合"ds"一起使用,用于指明距离符号中心的垂直距离和沿线方向放置的长度。

最后, "di"用于指明线的开始位置初始偏移量。

例如: 

SYMBOL(id:123, s:5, di:5px, ds:50px)

l

优先级 - 数值表示了这些画笔样式在绘制的次序。较低的优先级首先绘制,高优先级绘制在顶层。

如果优先级没有指明,默认值是1

2 标签(注记)工具参数

应用的几何类型: 

· 点:在点的位置放置文本标签。

· 线:沿线放置文本。 

· 多边形:在多边形重心上放置一个标签。

标签工具参数当前列表。记录这个列表最新扩展,所有参数都是可选的:

参数名称

描述

f

字符名称 - 

字体名称逗号分隔列表。

例如:LABEL(f:"Arial, Helvetica", s:12pt, t:"Hello World!") 

s

字体大小 – 有符号的数值。

t

字符串 – 可以是一个字符串,或者一个属性字段的名称。

例如:

LABEL(f:"Arial, Helvetica", s:12pt, t:"Hello World!") 

LABEL(f:"Arial, Helvetica", s:12pt, t:{text_value})

a

角度 -旋转角度(以度为单位, 逆时针方向)

c

前景色 - 16进制表达 (#RRGGBB[AA]) 

默认: 黑色 (c:#000000) 

预定义颜色可以在以后的说明中使用

b

背景色 – 标签背景色,16进制表达(#RRGGBB[AA]), 不设置不绘制背景矩形盒。

o

轮廓线颜色 – 轮廓线颜色。16进制表达(#RRGGBB[AA]),没有设置不绘制轮廓线。

h

影子颜色 – 背景影子颜色,16进制表达(#RRGGBB[AA]),不设置不会制影子。

w

拉伸 – 这个拉伸因子改变所有字符的宽度百分比。例如设置因子为150,那么所有字符宽度拉伸到1.5倍。默认拉伸因子为100

st

删除线

m

标签布局模式 - 相对于要素的几何文本如何绘制。

"m:p" – 默认, 简单的标签附加到一个点上,或者多段线的第一个顶点。

"m:l" – 文本附加到一个多段线的最后一个顶点上。一个画笔工具联合这个标签工具绘制多段线作为标签的路径。

"m:s" – 沿多段线拉伸绘制文本字符串,每个字符间距离相等。

"m:m" - 放置文本在多段线的中央(基于线的总长度)作为一个标签。

"m:w" - 多段线的每个线段上有一个字符。

"m:h" – 文本的每个字符附加到多段线上,并垂直于多段线的线段,固定点是每个线段的中心。

"m:a" – 文本的每个字符附加在多段线上,并且拉伸与多段线的线段合适的宽度,沿线段放置字符。固定点为线段的开始点。 

p

插入点位置 - 一个1到12的数值定义了标签位于插入点的位置。四个垂直模式:基线、中间、顶端、下端,三个水平模式:左边、中间、右边。它们组成12中模式,有1-12数值表示。

dx, dy

XY方向偏移量 – 基于标签插入点

应用到一个点上的字符串,或者一个多段线的每个顶点。

dp

垂直偏移量 - 沿线放置标签

"dp"指定标签与线之间的垂直距离。如果偏移量是负数,那么标签将绘制在线段的左边,否则为右边。

bo

加粗 - 如果指定,则加粗

it

倾斜 

un

下滑线

l

优先级 - 数值表示了这些画笔样式在绘制的次序。较低的优先级首先绘制,高优先级绘制在顶层。

如果优先级没有指明,默认值是1

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ESRI Shape文件是一种常用的矢量数据格式,它包含了点、线、面等要素和属性信息。为了处理这种格式的数据,我们可以使用GDAL/OGR库。本文将介绍如何使用C#语言和GDAL/OGR库读写ESRI Shape文件。 一、安装GDAL/OGRGDAL/OGR库是一个开源的地理信息系统扩展库,它可以读写各种GIS数据格式。我们可以从官网(https://gdal.org/download.html)下载最新的二进制版本,并进行安装。 二、创建工作空间 在C#中使用GDAL/OGR库进行ESRI Shape文件的读写,需要先创建一个工作空间。工作空间是一个抽象的概念,它代表了一个包含多个数据集的环境。我们可以使用以下代码创建一个工作空间: ```csharp using OSGeo.OGR; using OSGeo.GDAL; Gdal.AllRegister(); Ogr.RegisterAll(); string workspace = @"C:\data\shapefiles"; Driver driver = Ogr.GetDriverByName("ESRI Shapefile"); DataSource dataSource = driver.Open(workspace, 0); ``` 这里使用了GDAL/OGR库中的`Driver`、`DataSource`和`Gdal`等类。首先,我们调用`Gdal.AllRegister()`方法和`Ogr.RegisterAll()`方法注册GDAL/OGR库中的所有驱动程序。然后,我们指定了一个路径作为工作空间,并使用`Ogr.GetDriverByName()`方法获取ESRI Shapefile驱动程序。最后,我们调用`driver.Open()`方法打开工作空间,并将返回的`DataSource`对象存储到`dataSource`变量中。 三、读取ESRI Shape文件 在创建了工作空间之后,我们可以使用`dataSource`对象读取ESRI Shape文件中的要素和属性信息。以下代码演示了如何读取ESRI Shape文件中的所有点要素: ```csharp Layer layer = dataSource.GetLayerByName("points"); Feature feature = null; while ((feature = layer.GetNextFeature()) != null) { Geometry geometry = feature.GetGeometryRef(); double x = geometry.GetX(0); double y = geometry.GetY(0); Console.WriteLine($"Point ({x}, {y})"); } ``` 这里使用了GDAL/OGR库中的`Layer`、`Feature`和`Geometry`等类。首先,我们使用`dataSource.GetLayerByName()`方法获取名为“points”的图层,并将返回的`Layer`对象存储到`layer`变量中。然后,我们使用`layer.GetNextFeature()`方法循环遍历图层中的所有要素,并将返回的`Feature`对象存储到`feature`变量中。接着,我们使用`feature.GetGeometryRef()`方法获取要素的几何体,并将返回的`Geometry`对象存储到`geometry`变量中。最后,我们使用`geometry.GetX(0)`和`geometry.GetY(0)`方法获取要素的坐标,并将其打印到控制台上。 四、写入ESRI Shape文件 在读取了ESRI Shape文件之后,我们可以使用`dataSource`对象写入新的要素和属性信息。以下代码演示了如何创建一个新的ESRI Shape文件,并向其中添加一个点要素: ```csharp Layer layer = dataSource.CreateLayer("new_points", null, wkbGeometryType.wkbPoint, null); FieldDefn fieldDefn = new FieldDefn("name", FieldType.OFTString); layer.CreateField(fieldDefn, 1); Feature feature = new Feature(layer.GetLayerDefn()); Geometry geometry = new Point(121.5, 31.2); feature.SetGeometry(geometry); feature.SetField("name", "Shanghai"); layer.CreateFeature(feature); dataSource.SyncToDisk(); ``` 这里使用了GDAL/OGR库中的`FieldDefn`、`Point`和`wkbGeometryType`等类。首先,我们使用`dataSource.CreateLayer()`方法创建一个名为“new_points”的图层,并将返回的`Layer`对象存储到`layer`变量中。然后,我们使用`new FieldDefn("name", FieldType.OFTString)`语句创建一个名为“name”的字符串型属性。接着,我们使用`layer.CreateField()`方法创建一个新的属性字段,并将`fieldDefn`变量和`1`参数传递给该方法。接下来,我们使用`new Point(121.5, 31.2)`语句创建一个新的点几何体,并将其存储到`geometry`变量中。然后,我们使用`new Feature(layer.GetLayerDefn())`语句创建一个新的要素,并将其存储到`feature`变量中。接着,我们使用`feature.SetGeometry(geometry)`方法设置要素的几何体。最后,我们使用`feature.SetField("name", "Shanghai")`方法设置要素的属性值,并使用`layer.CreateFeature(feature)`方法将要素添加到图层中。最后,我们使用`dataSource.SyncToDisk()`方法将修改保存到磁盘中。 总结 本文介绍了如何使用C#语言和GDAL/OGR库读写ESRI Shape文件。我们首先创建了一个工作空间,并使用它读取了ESRI Shape文件中的点要素。然后,我们创建了一个新的ESRI Shape文件,并向其中添加了一个点要素。使用GDAL/OGR库可以方便地处理各种GIS数据格式,为GIS应用程序的开发提供了便利。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值