第三章 Model Builder
- 格式:doc
- 大小:284.00 KB
- 文档页数:12
arcgis批量裁剪矢量方法-回复ArcGIS是一种功能强大的地理信息系统软件,可以进行各种地理数据处理和分析。
在大规模数据处理中,有时需要批量裁剪矢量数据以满足特定要求。
本文将为您介绍如何使用ArcGIS进行批量裁剪矢量的方法,让您能够更高效地处理大规模数据。
第一步:准备工作在使用ArcGIS进行批量裁剪矢量数据之前,您需要准备一些必要的工作。
首先,确保您已经安装了ArcGIS软件,并且具有相应的许可证。
其次,您需要准备待裁剪的矢量数据集和裁剪范围的数据集。
这些数据可以是.shp文件、文件地理数据库或者其他ArcGIS支持的格式。
第二步:创建裁剪工具在ArcGIS中,您可以通过使用ModelBuilder或者Python脚本来创建一个自定义的裁剪工具,以满足您的特定需求。
下面将分别介绍这两种方法。
使用ModelBuilder创建裁剪工具ModelBuilder是ArcGIS中一种图形化的工具,可以帮助用户创建和编辑地理处理模型。
以下是使用ModelBuilder创建裁剪工具的步骤:1. 打开ArcGIS软件,并进入Catalog窗口。
2. 在Catalog窗口中,右键单击一个文件地理数据库,然后选择“新建→模型”。
3. 在模型设计器中,单击“添加数据”工具,并将待裁剪的矢量数据集和裁剪范围的数据集分别添加到模型中。
4. 在“工具箱”选项卡中,选择“分析工具→抽取数据→裁剪”工具,并将其添加到模型中。
5. 使用工具右键单击连接数据输入和工具的输入,以及工具的输出和数据输出,以建立正确的数据流。
6. 在模型设计完成后,单击“保存模型”按钮,并为模型命名。
使用Python脚本创建裁剪工具如果您更加熟悉Python编程,可以使用ArcPy库来编写裁剪工具的脚本。
以下是使用Python脚本创建裁剪工具的步骤:1. 打开Python编程环境,并导入ArcPy库。
2. 定义待裁剪的矢量数据集和裁剪范围的数据集的路径。
【ABP】从零开始学习ABP_001_新建实体功能上⼀篇⽂章中介绍了如何下载、运⾏ABP Zero⽰例项⽬,这个⽰例项⽬可以直接作为模板进⾏⼆次开发,很适合做企业开发框架。
本未介绍基于ABP Zero⽰例项⽬,如何新建⼀个⾃定义的实体。
此处以EquipmentType(设备类型)为例,建⽴⼀个简单的实体。
以下是之前添加⼀个简单实体类的效果:主页公司列表新建公司编辑公司删除公司建⽴⽅法按ABP的标准格式,完整建⽴⼀个实体,映射到数据库,作为⼀个基础资料,并通过前端进⾏增删查改功能,最⼩步骤如下:1. 新增实体类。
2. 添加数据库映射。
3. 同步到数据库。
4. 新建Dto,建⽴Dto与实体类的映射。
5. 建⽴实体类的功能接⼝(增删查改),并实现接⼝。
6. 添加视图模型ViewModel。
7. 添加控制器。
8. 添加视图。
9. 添加js脚本。
10. 添加前端菜单(⼊⼝)。
11. 添加权限管理。
1. 添加实体类在core层添加实体类1namespace oMES_APServer.Equipments2 {3public class EquipmentType : MESBase.MESBaseEntity4 {56 }7 }这⾥我把MES会⽤到的常规属性单独建了⼀个基类,并继承ABP全属性基类FullAuditedEntity1using Abp.Domain.Entities;2using Abp.Domain.Entities.Auditing;3using ponentModel.DataAnnotations;45namespace oMES_APServer.MESBase6 {7public class MESBaseEntity : FullAuditedEntity<int>, IPassivable8 {910public const int MaxCodeLength = 64;11public const int MaxNameLength = 256;12public const int MaxBriefNameLength = 64;13public const int MaxRemarkLength = 64;1415 [Required]16 [StringLength(MaxCodeLength)]17public string Code { get; set; }1819 [Required]20 [StringLength(MaxNameLength)]21public string Name { get; set; }2223 [StringLength(64)]24public string BriefName { get; set; }2526 [StringLength(512)]27public string Remark { get; set; }28public bool IsActive { get; set; }2930 }31 }2. 添加数据库映射在EFCore层添加以下代码:为了让EFCore能够⾃动⽣成数据库表结构。
EFCore⼀对⼀⼀对多多对多关系定义1、定义模型⽰例:学⽣和桌⼦的⼀对⼀关系:每个学⽣需要对应⼀个桌位信息,桌位信息不⽤包含学⽣信息public class Desk{ public int Id { get; set; } public string Name { get; set; } public Student Student { get; set; }}//这两个就是⽆论在那个就是就是在对应的⼀个添加上对应的类的主键public class Student{ public int Id { get; set; } public string Name { get; set; } public int DeskID { get; set; }//这个是对应Desk的主键,是Student的外键 public Desk Desk { get; set; }}在Student中定义 DeskID和Desk模型,在Desk表中定义Student模型2、在DataContext中定义两者的关系protected override void OnModelCreating(ModelBuilder modelBuilder){ // Do:⼀对⼀关系模型 modelBuilder.Entity<Student>().HasOne(l => l.Desk).WithOne(l => l.Student) .HasForeignKey<Student>(l => l.DeskID);}public DbSet<Student> Students { get; set; }public DbSet<Desk> Desks { get; set; }此时通过迁移命令将会⽣成Students表和Desks表1、定义模型⽰例:学校和⽼师的⼀对多关系:⼀个学校对应多个⽼师,⼀个⽼师对应⼀个学校public class School{public int Id { get; set; }public string Name { get; set; }public List<Teacher> Teachers { get; set; }//在"——"中,添加List<多个>}public class Teacher{public int Id { get; set; }public string Name { get; set; }public int SchoolID { get; set; }//这个SchoolID是Teacher的外键,对应School的逐渐;系统会⾃⼰配置的public School School { get; set; }//在"多"中,添加"⼀"对应的类的名字和ID}2、在DataContext中定义两者的关系protected override void OnModelCreating(ModelBuilder modelBuilder){ // Do:⼀对多关系模型 modelBuilder.Entity<Teacher>().HasOne(l => l.School).WithMany(l => l.Teachers) .HasForeignKey(l => l.SchoolID);}public DbSet<Teacher> Teachers { get; set; }public DbSet<School> Schools { get; set; }此时通过迁移命令将会⽣成Schools表和Teachers表五、多对多的关系模型多对多的模型,就是需要创建第三个类,来关联两个多多类1、定义模型:⽰例:建⽴⽗母和孩⼦的多对多模型,⽗母可以对应多个孩⼦,孩⼦可以有⽗亲,母亲的对应关系// Do:定义⽗母类型public class Parent{ public Parent() { this.RelationShips =new List<RelationShip>(); } public int Id { get; set; } public string Name { get; set; } // Do:3、定义关系集合 public List<RelationShip> RelationShips { get; set; }}// Do:定义⼦类型public class Child{ public Child() { this.RelationShips=new List<RelationShip>(); } public int Id { get; set; } public string Name { get; set; } // Do:2、定义关系集合 public List<RelationShip> RelationShips { get; set; }}///<summary>/// 1、多对多关系模型///</summary>public class RelationShip{ public int ChildID { get; set; } public Child Child { get; set; } public int ParentID { get; set; } public Parent Parent { get; set; }}2、在DataContext中定义两者的关系protected override void OnModelCreating(ModelBuilder modelBuilder){ // Do:多对多配置联合主键 modelBuilder.Entity<RelationShip>().HasKey(l => new {l.ChildID, l.ParentID}); // Do:多对多定义关系模型映射(本段代码可有可⽆) modelBuilder.Entity<RelationShip>().HasOne(l => l.Child).WithMany(l => l.RelationShips) .HasForeignKey(l => l.ChildID); modelBuilder.Entity<RelationShip>().HasOne(l => l.Parent).WithMany(l => l.RelationShips) .HasForeignKey(l => l.ParentID);} public DbSet<Teacher> Teachers { get; set; } public DbSet<School> Schools { get; set; }。
OPENSEESOpensees模型OpenSEES中有限元对象被划分成更多的子对象,其中包括节点对象、材料对象、截面对象、单元对象、荷载对象和约束对象等,并且为其子对象提供了多种不同的选择,包括不同的材料类型,截面形式,荷载模式以及约束方式等,再由它们组合成为有限元模型对象。
在程序中建立子对象的命令主要有:Node、Mass、Material、Section、Element、LoadPattern、TimeSeries、Transformation、Block和Constraint等等。
通过上述命令,我们可以分别确定对象中各节点的位置、节点集中质量、材料本构关系、截面恢复力模型、单元类型、外加荷载模式、几何坐标转换类型和约束形式等。
这些命令构建了有限元模型相应的子对象,由这些子对象组合构成有限元模型对象ModelBuilder。
纤维模型纤维模型是指将纤维截面赋予梁柱构件(即定义构件的每一截面为纤维截面),纤维截面是将构件截面划分成很多小纤维(包括钢筋纤维和混凝土纤维)对每一根纤维只考虑它的轴向本构关系,且各个纤维可以定义不同的本构关系。
纤维模型假定构件的截面在变形过程中始终保持为平面,这样只要知道构件截面的弯曲应变和轴向应变就可以得到截面每一根纤维的应变,从而可以计算得到截面的刚度。
纤维模型能很好的模拟构件的弯曲变形和轴向变形,但不能模拟构件的剪切非线性和扭曲非线性。
构件零长度构件可以赋予零长度构件BARSLIPMaterial(这种材料的本构关系可以精确模拟循环加载时在构件节点处由于钢筋的滑移和混凝土的开裂所引起的构件的刚度退化和强度退化现象)来模拟构件节点处的变形,另外用Bond-SP01Material可以模拟节点处钢筋的应力渗透现象(节点处钢筋还没有整体滑移)所引起的构件的强度和刚度变化。
OPENSEES中零长度构件虽然在建模时是零长度,但在计算这种构件变形时却是取其长度为单位长度。
计算时将零长度截面的弯曲曲率乘以1得到构件的弯曲变形。
JASON操作流程及实用初级手册(invertrace部分-试用版)JASON(invertrace)操作流程前言一:JASON软件工作的基础与关键:井数据编辑、子波提取、合成记录制作与时深关系的调整。
二:工作思路:1:所有的井数据应能较好地反映地下地质情况的变化。
2:首要的是要作好井数据的编辑工作;时深转换要准确;合成记录要尽可能的与地震记录接近;子波提取要合理;极性与地震数据相匹配。
3:先做InverTrace,了解油藏的大致分布,并在AI体上重新解释储层的顶、底面(因为受地震分辨率的限制,地震数据的波峰或波谷不一定代表油藏的反射)。
4:通过交会图(crossplot)寻找与反映油藏关系密切的有关属性(如:GR、RES、Impedance、Porosity…).5:在此基础上进行IverMod的属性反演,但要有一定数量的井,InverMod反演才可靠。
6:在作好InverTrace、InverMod的基础上,再应用StatMod模块。
第一章数据连接与加载一:首先要建立一个JASON的工作目录。
(例sn4jason)加载的数据、中间过程数据及最终成果将保存在此目录下,相当于一个Seis Project。
二:数据连接与加载。
在所建的工作目录下启动JASON,出现JASON工作主菜单。
图1-1 JASON工作主菜单(一)地震工区相关数据连接主菜单→Datalinks→Landmark→Landmark98(97,2000)出现次级菜单。
图1-2 地震工区相关数据连接菜单1:File→SeisWorks project(选择要研究的地震工区)2:Select→import→Seismic/property data(选择要加载的地震数据体)import→Horizons(选择要研究的地震层位)注:若LandMark地震工区有现成可用井曲线,可import→wells直接加载。
3:Select→Trace gate(选择要研究的地震工区范围)4: Select→Time gate(选择要研究的地震工区时间范围)5:Options→Desire JGW format→As file(8 bit integer……可供选择的数据加载格式) 6:Options→Existing files→overwrite(Append……对已存在文件的处理方式)7:Transport→Import(加载数据执行)注:在整个数据加载过程中,有些选项是可选的,注意选择。
简单制作飞机模型英语作文Title: Crafting a Simple Airplane Model。
Crafting a simple airplane model can be an enjoyable and rewarding activity for hobbyists of all ages. Whether you're a seasoned model builder or a beginner looking to try your hand at a new craft, creating an airplane model offers an opportunity to unleash your creativity and attention to detail. In this essay, I'll guide you through the process of making a basic airplane model step by step.Step 1: Gather Your Materials。
Before diving into the construction process, it's essential to gather all the necessary materials. Here's a list of what you'll need:1. Balsa wood or foam board for the airplane body。
2. Craft knife or scissors for cutting。
3. Sandpaper for smoothing rough edges。
4. Glue suitable for your chosen materials。
5. Paints and brushes for adding color and detail。
ArcToolbox工具详解—三维分析工具 2010-06-04 16:04 转载自 gis理想 最终编辑 gis理想 大家好!最近看到很多群友问到有关ArcMAP里的工具问题 这里我把ArcMAP工具里的各项列出来 请大家先熟悉一些基本的常识 有些单词也不是很好翻译 估计会有很多不当之处 请大家不吝赐教!这次先把三维分析工具整理了一下 以后会陆续整理其他工具的说明 好了 言归正传! 3D Analyst Tools 三维分析工具
这里请看上图 第一个是转换 里面有 从要素类进行转换 从文件进行转换 从栅格进行转换 从地形开始转换 从三角网开始转换 转换至KML 三维图层转换至要素类 而这些里面又有更加细化的工具 这里就举一个例子 从地形转换里另有两个方面 一个是从地形到栅格 一个是从地形到三角网 请大家自行对照理解!如图:
第二个是表面功能 里面有五个小方面 一是Interpolate Shape(插值形状)二是Line Of Sight(视线) 三是 Surface Length(表面长度) 四是Surface Spot(表面地点)五是Surface Volume(表面体积)
第三个是栅格修补 这里有八个方面 一是IDW 二是Kriging(克里金) 三是Natural Neighbor(自然邻域)四是Spline 五是Spline with Barriers 六是Topo to Raster(地形到栅格) 七是Topo to Raster by File(用文件地形到栅格) 八是Trend(趋势) 第四个是栅格计算 这个很好理解 一是除 二是浮点 三是取整 四是减 五是加 六是乘 第五是栅格重分类 一是查找 二是用ASCII文件重分类 三是用表重分类 四是重分类 五是切片
第六是栅格表面 一是坡向 二是等高线 三是等高线列表 四是带路障的等高线 五是曲率 六是填挖 七是山影 八是观察点 九是坡度 十是视域
第七是地形 一是增加要素类到地形 二是增加地形点 三是增加地形金字塔 四是建立地形 五是改变地形参考比例 六是创建地形 七是从地形中移去要素类 八是移去地形点 九是移去地形金字塔
第八是TIN的创建 一是创建TIN 二是划定TIN数据区域 三是编辑TIN 第九是TIN的表面 一是消除节点 二是从中挑出 三是多边形插值成多个面 四是TIN坡向 五是 TIN轮廓 六是TIN差异 七是TIN表面体积 八是TIN坡度 第三章 Model Builder 第一节 Model基础 前面讲了很多的地里处理的概念,涉及好几个地里处理运行方式。在这章中,我们来看看Model Builder的具体的框架结构与功能。Model Builder具有几个优势,而且在目前ArcGIS Server的地理处理发布,也是通过Model Builder来实现。
Model Builder的优势:(一)自动地理处理流程。Model Builder可以把你分析和准备数据过程所用到的所有分析工具和数据通过流程化结合在一起。每次更新操作都可以保存,并且重新运行。(二)共享地理处理知识。Model的数据,工具都通过图形方式表示,通俗易懂,并且可以保存下来与别人共享,同时也可以保存在SDE数据库中,或通过ArcGIS Server实现互联网共享。(三)记录与文挡化。Model的运行可以象Toolbox中的工具一样运行,并且还提供了图文结合的帮助,方便共享。(四)、根据需要添加复杂模型。模型可以包括复杂的处理过程,而一个模型中还可以包含子模型,实现更复杂的应用。
图3-1 Model Builder的元素如图3-1: Tools—与ArcToolbox一样,可以直接拖拽到Model中来使用。在Model中,默认用金黄色的方框表现。
Project data—在工具执行之前存在的任何数据. Project data 作为工具的输入数据,用兰色的椭圆来表现。
Derived data—衍生数据,是根据项目数据与工具分析之后生成的新数据。衍生数据可以作为项目数据来作另一个处理,衍生数据用绿色的椭圆来表现。 Values—参考工具参数而不是数据集;例如缓冲工具的缓冲距离。值通过浅兰色椭圆表现。
Derived values—运行工具以后创建的参考值,例如计算默认簇容限工具的输出值。用浅绿色椭圆表现。
下面举个简单的Model Builder例子:任务:我们假设有全国的河流数据,现在通过Model Builder做一个长江2公里范围缓冲区。 步骤: 1、打开ArcMAP,并且添加河流数据; 2、 打开ArcToolbox,并鼠标右击-->New Toolbox,在ArcToolbox下列表中,会添加一个Toolbox的工具箱,可以修改此工具箱的名称。鼠标右击-->NewModel,建立一个新的Model; 3、 把河流数据和Select工具以及Buffer工具拖拽到Model中,通过Add Connection,把数据与工具连接在一起,如图3-2所示。双击Select和Buffer,设置Select的SQL语句,选择河流名称,如[NAME] = '长江',设置Buffer的缓冲区为2KM.并设置输出的结果的文件路径和名称; 4、 点击“Run”运行模型; 5、 保存Model。 上面是一个简单的建立Model的例子,在Model里边可以添加的不仅仅是已有工具,也可以是自己写的Script脚本工具,以及SubModel。 图3-2 第二节 Model参数 当你定义模型的时候,你可能需要设置一些变量作为模型的参数(model parameters)。这样做有两个目的:首先,可以让你在对话框中运行模型,其次,可以与子模型结合。如图3-3所示。这里还要强调一点,当我们需要把模型通过ArcGIS Server作为地理处理服务发布出去时候,我们就必须要设置这样的参数。
模型对话框 模型可以在Model Builder或在对话框中运行。和其他的任意工具一样,在运行模型以前必须设定参数值。当你创建好了自己的模型,你必须定义什么样的参数在对话框中可见;否则,是无法实现在对话框中运行的。在对话框中运行模型,只有模型参数的变量显示。而且变量值在每次运行模型时候都可以改变。例如,一个水质量模型对话框,可以让用户指定水域的名称来做分析,并对选择的井做缓冲分析。
子模型 我们知道,使用子模型可以把一个大的模型分成许多的小模型,这样更容易进行管理。在一个子模型添加到主模型之前,首先需要把子模型的输出变量设置为模型的参数。这样可以让这些输出变量在模型之间共享。 第三节 Model条件循环 在任何一种处理中,都希望有实现与程序交互的功能,有时候我们经常可以把这种交互处理过程认为循环。对于大多数编程语言来说,交互式关键的概念。那么使用交互,你可以不断使用不同的数据来执行处理过程。在ModelBuilder里,你可以使用iteration来对整个模型进行交互,或则只是对某个单独的处理过程进行交互。批处理就是其中一个例子,它交互时候使用不同的数据,从而实现对整个模型的交互。使用批处理过程,你可以使用模型参数来设置数据和条件值的参数,完成每个交互的过程。 批处理可以在ArcToolbox中实现,而不是在Model Builder中完成。在Model Builder中,你可以使用集中方法来执行过程或模型的交互,这些方法在下面中描述,为了方便,我用英文原文来表示名称。 Lists: 你可以声明一个或多个变量做为列表变量。一旦你声明了一个变量作为列表值,打开这个变量将显示批处理对话框。当这个列表变量连接到一个工具以后,这个工具和所有下游的处理(这个处理依赖这个工具的输出内容)将把这个列表的变量都执行一遍。 Series: 你可以声明一个或多个变量作为系列参数。系列参数与列表相似,它可以包含多个值。所不同的地方在于,对于系列中的每个值,整个模型只执行一次。你可以在模型中设置多个系列变量,但是你只能够声明一个模型交互控制。见图3-4。 Boolean condition: 你可以指定模型进行交互,直到它的参数变量值为false为止。你可以使用Boolean或Long型变量。如果你使用Long变量,那么负数或0表示false。所有的正数都认为是true。 Count: 你可以设置模型交互的次数,直到达到某个Count数。 Feedback:反馈是设置把某个处理的输出作为最开始的输入。见图3-5
第四节 模型执行可视界面与帮助 我们的所有处理可以直接在ModelBuilder中执行,并得到结果。ModelBuilder还提供另外一种选择,就是它可以作为一个工具来进行使用。象ArcToolbox中其它的工具一样,可以在窗口中打开,通过设置输入数据,参数,输出结果参数等来执行。并且和其它tools一样,可以提供帮助系统。 对于上图的这个模型工具,我们参考一下图3-7,看在实际模型当中这些输入框是怎么设置的。
从上图可以看到四个输入的参数数据和输出的参数数据都是设置为P参数。即在ModelBuilder中我们通过设置参数,把这些作为变量,以便执行操作时候,可以提供交互式的选择。输入参数的名称可以在ModelBuilder的属性项参数,然后添加名字和数据类型,如上图的Input Feature Class,数据类型为Feature Layer。这样就可以实现模型的人机界面的交互。
对于使用帮助帮助系统,ModelBuilder提供了一套方便的工具。通过点击模型鼠标右键Edit Documentation,如图3-8。