python计算矩形面积和周长保留两位小数_【FMEHOWTO系列】29计算面积,周长和长度...

概述

可以使用转换器(例如FME中的AreaCalculator和LengthCalculator)计算面积,周长和长度。在本教程中,您将学习如何计算存储在PostGIS Parks表中的多边形要素的面积和周长,计算多边形周长以及计算温哥华地区自行车道的长度。


area-of-polygon.fmwt

perimeter-of-polygon.fmwt

length-of-line.fmwt

bike-paths.zip

parksgdb.zip

注意:由于您正在处理面向公众的数据库,因此有时可能会覆盖和/或修改表。如果您的转换产生意外结果,请参阅重置PostGIS培训数据库文章。或者,您可以下载提供的文件,并使用适当格式的读模块替换PostGIS读模块。

练习1 - 计算多边形要素的面积

在本练习中,您将学习如何使用AreaCalculator计算公园多边形的面积。确定每个公园的面积将有助于您了解整个城市的绿地分布。有关计算使用多边形面积统计信息的详细信息,请参阅桌面基础课程手册。

说明

1.启动FME Workbench

如果尚未打开,请启动FME Workbench。

2.选择“生成工作空间”

在“开始”页面的“创建工作空间”部分中,选择“生成工作空间”选项。

注意:生成工作空间的快捷方式是Ctrl + G.

6401904e93cdd668a3ba7279529a00f4.png

3.设置读模块 Format并连接到PostGISTraining Database

在“生成工作空间”对话框中,将“读取器格式”设置为PostGIS。

接下来,从读模块连接列表中选择PostGIS Training Database。如果尚未设置数据库连接,请选择“添加数据库连接”并输入以下参数:

主机:postgis.train.safe.com

端口:5432

数据库:fmedata

用户名:fmedata

密码:fmedata

接下来,打开读模块参数并从表列中选择Parks表。

b1a32cf8d3b62baf02853618c9b6cfbf.png

4.设置写模块格式并连接到PostGIS培训数据库

将写模块格式设置为PostGIS,将写模块连接设置为与读模块(PostGIS Training Database)相同的连接,然后单击OK以生成工作空间。“生成工作空间”对话框应如下面提供的屏幕截图:

6f343f16aa61a5676ca25cfa5d1daa5e.png

5.设置要素操作和表处理

生成工作空间后,双击“写模块要素类”以打开“写模块要素类参数”对话框。

在“常规”部分中,将“表名称”设置为:ParkArea

在“表”部分中,确保“要素操作”设置为“插入”并将“表处理”设置为“删除和创建”。

2da67783e681b0844ab45297aadf15ec.png

注意:Drop和Create用于当需要清空表并对数据库模式进行更新时。例如,drop和create用于删除表结构,可能是添加或删除列,更改数据类型等等。有关写模块要素类参数(如表处理)的详细信息,请参阅写模块要素类参数文档。

6.更新属性

切换到写模块参数对话框中的“用户属性”选项卡,将属性定义设置为自动。

单击“确定”接受更改并关闭“写模块参数”对话框。

50289d348b6ee9c1f79452cecc8ca703.png

注意:自动属性定义是指Workbench自动定义属性列表,具体取决于所连接的读模块要素类。此外,只要在工作空间中更改(即重命名,删除等)属性,写模块要素类上的属性列表就会自动更新。有关用户属性和属性定义的更多信息,请参阅文档。

7.添加FeatureHolder

要将FeatureHolder添加到画布,通过键入“FeatureHolder”以在快速添加搜索中显示FME转换器列表。双击或使用箭头键和Enter键将转换器列表中的FeatureHolder添加到工作空间。

添加转换器后,将Parks读模块连接到FeatureHolder。

FeatureHolder读取并存储Parks表中的要素。一旦存储了所有要素,现有表将关闭,并允许FME删除现有表并创建新表。

8.计算面积

在FeatureHolder之后添加AreaCalculator并打开转换器参数。将Area Attribute设置为“parkarea” - 这将向表中添加一个新列并计算数据集中每个多边形要素的面积。

将所有其他参数保留为默认值,然后单击“确定”接受更改并关闭AreaCalculator参数。

08329012c671d3a3252c60a7ed405949.png

注意:该区域以方形地图单位计算。

9.四舍五入面积值

接下来,添加一个AttributeRounder,因为您只想找到每个公园的面积到最近的地图单位(在本例中是米)。

打开AttributeRounder参数,将Attributes to Round设置为“parkarea”,将Decimal Places设置为0。

580dffc7488f8053c4ef4af63d197119.png

10.运行工作空间

单击工具栏上的“运行”按钮,或使用菜单栏上的“运行”>“运行转换”运行工作空间。

e4a27e2645d7d7a3f433949a58281622.png

运行转换后,您的表格将有一个parkarea列,其中包含每个多边形要素的面积。您可以通过选择写模块并单击选择写模块时出现的快捷菜单中的“Inspector”按钮来查看新表。或者,如果要自动打开工作空间输出FME Inspector,可以将Inspector附加到工作空间中最终转换器的输出端。

结果

输入

9751857e4c6f9b4fe4130a7de8f0d254.png

输出

d634274994fc06dd9bae24948b87f374.png


练习2 - 计算多边形要素的周长

在本练习中,您将学习如何使用LengthCalculator计算公园多边形的周长。

说明

1.启动FME Workbench

如果尚未打开,请启动FME Workbench。

2.选择“生成工作空间”

在“开始”页面的“创建工作空间”部分中,选择“生成工作空间”选项。

注意:生成工作空间的快捷方式是Ctrl + G.

6401904e93cdd668a3ba7279529a00f4.png

3.设置读模块格式并连接到PostGIS培训数据库

在“生成工作空间”对话框中,将“读模块格式”设置为PostGIS。

接下来,从读模块连接列表中选择PostGIS Training Database。如果尚未设置数据库连接,请选择“添加数据库连接”并输入以下参数:

主机:postgis.train.safe.com

端口:5432

数据库:fmedata

用户名:fmedata

密码:fmedata

接下来,打开读模块参数并从表列中选择Parks表。

b1a32cf8d3b62baf02853618c9b6cfbf.png

4.设置写模块格式并连接到PostGIS培训数据库

将写模块格式设置为PostGIS,将写模块连接设置为与读模块(PostGIS Training Database)相同的连接,然后单击OK以生成工作空间。“生成工作空间”对话框应如下面提供的屏幕截图:

6f343f16aa61a5676ca25cfa5d1daa5e.png

5.设置要素操作和表处理

生成工作空间后,双击“写模块要素类”以打开“写模块要素类参数”对话框。

在“常规”部分中,将“表名称”设置为:ParksPerimeter

在“表”部分中,确保“要素操作”设置为“插入”并将“表处理”设置为“删除和创建”。

ebdd4c677b813cbab743288813707c6d.png

注意:当需要清空表并对数据库模式进行更新时,将使用Drop和Create。例如,drop和create用于删除表结构,可能是添加或删除列,更改数据类型等。有关写模块要素类参数(如表处理)的详细信息,请参阅文档。

6.更新属性

切换到写模块参数对话框中的用户属性选项卡,将属性定义设置为自动。

单击“确定”接受更改并关闭“写模块参数”对话框。

01fb14ae1575195fee72a65e259e1662.png

注意:自动属性定义是指Workbench自动定义属性列表,具体取决于所连接的读模块要素类。此外,只要在工作空间中更改(即重命名,删除等)属性,写模块要素类上的属性列表就会自动更新。有关用户属性和属性定义的更多信息,请参阅文档。

7.添加FeatureHolder

要将FeatureHolder添加到画布,通过键入“FeatureHolder”以在快速添加搜索中显示FME转换器列表。通过双击或使用箭头键和Enter键将转换器列表中的FeatureHolder添加到工作空间。

添加转换器后,将Parks读模块连接到FeatureHolder。

FeatureHolder读取并存储Parks表中的要素。一旦存储了所有要素,现有表将关闭,并允许FME删除现有表并创建新表。

8.计算周长

添加一个LengthCalculator并将其连接到FeatureHolder。建立连接后,打开转换器参数并将长度属性设置为“周长”

这将向表中添加一个新列,并计算数据集中每个多边形要素的周长。将所有其他参数保留为默认值,然后单击“确定”接受更改并关闭“LengthCalculator”参数。

09404a3cdeb158c3bc76e34778c81e32.png

注意:周长以地图单位计算。

9.四舍五入面积值

接下来,添加一个AttributeRounder并将其连接到LengthCalculator:Output端口。

将“要四舍五入的属性”设置为“周长”并将“小数位数”设置为0,然后单击“确定”。

45d8d8134ef70a601359113e6ef4f039.png

10.运行工作空间

单击工具栏上的“运行”按钮,或使用菜单栏上的“运行”>“运行转换”运行工作空间。

02a311f37e3a68695665d2de9798bb85.png

运行转换后,您的表将具有一个周长列,其中包含每个多边形要素的周长。您可以通过选择写模块并单击选择写模块时出现的快捷菜单中的“检查”按钮来查看新表。或者,如果要自动打开工作空间输出FME Inspector,可以将Inspector附加到工作空间中最终转换器的输出端。

结果

输入

9751857e4c6f9b4fe4130a7de8f0d254.png

输出

f9d131357c3e837df85ec83fa190edf9.png


练习3 - 计算线的长度

在本练习中,您将学习如何使用LengthCalculator计算自行车道的长度。要了解有关计算长度的更多信息,请参阅文章使用LengthCalculator距离测量。

说明

1.启动FME Workbench

如果尚未打开,请启动FME Workbench。

2.选择“生成工作空间”

在“开始”页面的“创建工作空间”部分中,选择“生成工作空间”选项。

注意:生成工作空间的快捷方式是Ctrl + G.

6401904e93cdd668a3ba7279529a00f4.png

3.设置读模块格式并连接到PostGIS培训数据库

在“生成工作空间”对话框中,将“读模块格式”设置为PostGIS。

接下来,从读模块连接列表中选择PostGIS Training Database。如果尚未设置数据库连接,请选择“添加数据库连接”并输入以下参数:

主机:postgis.train.safe.com

端口:5432

数据库:fmedata

用户名:fmedata

密码:fmedata

接下来,打开读模块参数并从表列中选择BikePaths表。

b1a32cf8d3b62baf02853618c9b6cfbf.png

4.设置写模块格式并连接到PostGIS培训数据库

将写模块格式设置为PostGIS,将写模块连接设置为与读模块(PostGIS Training Database)相同的连接,然后单击OK以生成工作空间。“生成工作空间”对话框应如下面提供的屏幕截图:

6f343f16aa61a5676ca25cfa5d1daa5e.png

5.设置要素操作和表处理

生成工作空间后,双击“写模块要素类”以打开“写模块要素类参数”对话框。

在“常规”部分中,将“表名称”设置为:BikePathLengths

在“表”部分中,确保“要素操作”设置为“插入”并将“表处理”设置为“删除和创建”。

2b15a12cdd20614dd04337bd0ceec66a.png

注意:当需要清空表并对数据库模式进行更新时,将使用Drop和Create。例如,drop和create用于删除表结构,可能是添加或删除列,更改数据类型等。有关写模块要素类参数(如表处理)的详细信息,请参阅文档。

6.更新属性

切换到写模块参数对话框中的用户属性选项卡,将属性定义设置为自动。

单击“确定”接受更改并关闭“写模块参数”对话框。

d01e8dd8d9f3ec6b91704f4f6f710bbf.png

注意:自动属性定义是指Workbench自动定义属性列表,具体取决于所连接的读模块要素类。此外,只要在工作空间中更改(即重命名,删除等)属性,写模块要素类上的属性列表就会自动更新。有关用户属性和属性定义的更多信息,请参阅文档。

7.添加FeatureHolder

要将FeatureHolder添加到画布,通过键入“FeatureHolder”以在快速添加搜索中显示FME转换器列表。通过双击或使用箭头键和Enter键将转换器列表中的FeatureHolder添加到工作空间。

添加转换器后,将BikePaths 读模块连接到FeatureHolder。

FeatureHolder读取并存储BikePaths表中的要素。一旦存储了所有要素,现有表将关闭,并允许FME删除现有表并创建新表。

8.计算长度

在FeatureHolder之后添加一个LengthCalculator并打开转换器参数。

将长度属性设置为“长度” - 这将向表中添加新列并计算线要素的长度。

将所有其他参数保留为默认值,然后单击“确定”接受更改并关闭“LengthCalculator”参数。

b39620e0feec2089a2d839191ac23c06.png

注意:长度以地图单位计算。

9.四舍五入长度值

接下来,添加一个AttributeRounder并将其连接到LengthCalculator:Output端口。

将“要四舍五入的属性”设置为“长度”并将“小数位数”设置为0,然后单击“确定”。

33cac7837a51dc56c0d0792f620f923f.png

10.运行工作空间

单击工具栏上的“运行”按钮,或使用菜单栏上的“运行”>“运行转换”运行工作空间。

d5e06b0a114281de055042307ae4bc6c.png

运行转换后,您的表将具有长度属性,其中包含每个线要素的长度。您可以通过选择写模块并单击选择写模块时出现的快捷菜单中的“检查”按钮来查看新表。或者,如果要自动打开工作空间输出FME Inspector,可以Inspector附加到工作空间中最终转换器的输出端。

结果

输入

b2f1112ad4ec338636dffc1d88f6a41c.png

输出

dcc231a295c252ab0de82cd6c13a6f84.png


转换器

AreaCalculator -计算多边形对象的面积并将值存储在属性中。

AttributeRounder -将属性四舍五入到指定的小数位数。

FeatureHolder -存储传入的要素直到它们全部到达,然后按原来的顺序释放它们。

LengthCalculator -计算要素的长度并将其添加为新属性。在多边形上使用此转换器将生成多边形的周长。

015bde0acfdf2fcbf4a11dd07e251f11.gif bfdd653fd6e5ae3c554412304af343dc.png e4a9fc3136bf1a4c469c5505f0d56847.png e4a9fc3136bf1a4c469c5505f0d56847.png 往期精选

●01 如何在FME中执行此操作

●02 将列添加到表中

●03 对表格或图形数据进行排序

●04 计算新字段的值

●05 关联数据文件和字段

●06 从线段创建多边形

●07 纠正拓扑错误

●08 导入数据库表、栅格数据、矢量数据

●09 数据检索

●10 按区域掩码选择数据

●11 从栅格转换为矢量

●12 从矢量转换为栅格

●13 通过重新采样修改栅格像元大小

●14 按地理要求更改栅格值

●15 减少不必要的坐标点

●16 来自点数据的TIN(不规则三角网)

●17 通过克里金法将点插值转换为栅格

●18 从点生成等高线数据

●19 从栅格生成等高线数据

●20&26 使用RasterExpressionEvaluator转换器的简单示例

●21 投影定义和坐标转换

●22 多边形与多边形的叠加

●23 多边形中点的叠加

●24 拓扑相交

●25 多边形内的线

●27 栅格计算和栅格调色板

●28 栅格邻域函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值