创建要素源

ArcGIS教程:创建网络数据集(一) 在本练习中,您将使用地理数据库 San Francisco 中的街道要素和转弯要素创建一个网络数据集。您还可以加入历史交通流量数据,以便求解取决于时间的路径。 阅读详情

MapGuide Stuido提供了非常友好的用户界面来创建一个要素源,使用起来也非常简单,所以本节中不会介绍如何使用MapGuide Studio来创建要素源,而是介绍如何以编程的方式创建一个要素源。

最简单的编程式创建要素源的方法是调用MgFeatureService::CreateFeatureSource(…),它的方法签名如下所示,其中参数resource用于指定新建要素源的ID,sourceParams用于指定创建要素源所需的参数。目前,此方法只支持创建SDF类型的要素源,它首先会创建一个SDF文件,然后创建要素模式,最后为此SDF文件创建一个要素源。MapGuide的下一个版本(开源版2.2)即将支持创建SHP和SQLite类型的要素源。

void CreateFeatureSource(

MgResourceIdentifier resource,

MgFeatureSourceParams sourceParams);

如下的代码展示了如何创建一个SDF的要素源,在调用方法CreateFeatureSource(…)之前需要创建一个MgCreateSdfParams的对象实例,MgCreateSdfParams继承自MgFeatureSourceParams,指定了新建SDF文件的要素模式、Spatial Context的名称和空间参考系。

$classDef = new MgClassDefinition();

$classDef->SetName("Buffer");

$classDef->SetDescription("Feature class for buffer layer");

$classDef->SetDefaultGeometryPropertyName("GEOM");

 

$identityProperties = $classDef->GetIdentityProperties();

$properties = $classDef->GetProperties();

 

$prop = new MgDataPropertyDefinition("KEY");

$prop->SetDataType(MgPropertyType::Int32);

$prop->SetAutoGeneration(true);

$prop->SetReadOnly(true);

$identityProperties->Add($prop);

$properties->Add($prop);

 

$prop = new MgDataPropertyDefinition("NAME");

$prop->SetDataType(MgPropertyType::String);

$properties->Add($prop);

 

$ propGeom = new MgGeometricPropertyDefinition("GEOM");

$propGeom->SetGeometryTypes(MgFeatureGeometricType::Surface);

$properties->Add($propGeom);

 

$schema = new MgFeatureSchema("BufferSchema", "Temporary buffer schema");

$schemaClasses = $schema->GetClasses();

$schemaClasses->Add($classDef);

 

$wkt = "LOCAL_CS[/"Non-Earth (Meter)/",LOCAL_DATUM[/"Local Datum/",0],

UNIT[/"Meter/", 1],AXIS[/"X/",EAST],AXIS[/"Y/",NORTH]]";

$params = new MgCreateSdfParams("ArbitraryXY", $wkt, $schema);

$resource = new MgResourceIdentifier(

"Library://Samples/Data/CreateFeatureSourceTest.FeatureSource");

$featureService->CreateFeatureSource($resource, $params);

如果打算创建其它类型的要素源,或者为已经存在的空间数据创建要素源,那么方法CreateFeatureSource(…)无法实现这些功能,此时我们需要调用资源服务MgResourceService::SetResource()来创建一个要素源。如果是文件类型的要素源,例如SHP、SDF或SQLite,还需要调用MgResourceService::SetResourceData()将文件上传到MapGuide资源库中。

如下的代码展示了如何根据一个已经存在的SDF文件创建要素源。

$resId = new MgResourceIdentifier(

"Library://Samples/Data/Sheboygan_Parcels.FeatureSource");

    // 设置要素源

$contentSource = new MgByteSource("Sheboygan_Parcels.FeatureSource");

$contentReader = contentSource->GetReader();

$resourceService->SetResource($resId, $contentReader, null);

 

// 上载要素源数据到资源库

$sdfFileName = "c:/Samples/Sheboygan_Parcels.sdf";

$dataSource = new MgByteSource($sdfFileName);

$dataReader = dataSource->GetReader();

$featureService->SetResourceData($resId, "Sheboygan_Parcels.sdf", "File", $dataReader);

上面的代码中使用的要素源定义文件“Sheboygan_Parcels.FeatureSource”的内容如下,在指定FDO连接参数“File”的值时,此要素源定义使用了资源标签%MG_DATA_FILE_PATH%,要素服务在使用此要素源时,会将其替换为SDF文件在MapGuide服务器上实际的存储路径,关于更多资源标签的信息,请参考第六章2.5节资源标签。

<?xml version="1.0" encoding="UTF-8"?>

<FeatureSource version="1.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance "

xsi:noNamespaceSchemaLocation="FeatureSource-1.0.0.xsd">

  <Provider>OSGeo.SDF.3.4</Provider>

  <Parameter>

    <Name>File</Name>

    <Value>%MG_DATA_FILE_PATH%Sheboygan_Parcels.sdf</Value>

  </Parameter>

  <Parameter>

      <Name>ReadOnly</Name>

      <Value>TRUE</Value>

  </Parameter>

</FeatureSource>

ArcGIS教程:创建网络数据集(三) 现在,默认情况下 Network Analyst 不会穿过 RestrictedTurns 要素类中的任何转弯要素。这是对要避开的违法转弯或危险转弯进行建模的好方法。街道源的赋值器为空,因此当使用 RestrictedTurns 进行限制时,这些街道源仍然是可穿过的。 阅读详情

相关推荐

ArcGIS进阶:巧用渔网与分割工具实现多源地理要素的批量分区管理

如果手动操作,至少需要3天时间,而使用渔网+分割工具组合,2小时就完成了全部数据处理。实测中发现,当处理超大型面要素时(如省界多边形),建议先执行【修复几何】工具,避免拓扑错误导致分割失败。在ArcGIS Pro中,可以通过以下路径找到该工具:【数据管理工具】→【要素类】→【创建渔网】。处理高程数据(DEM)时要注意,某些分析软件对分割后的栅格文件命名有特殊要求,可以在【输出基本名称】中加入位置标识符。栅格数据需要使用专用工具:【数据管理工具】→【栅格】→【栅格处理】→【分割栅格】。

weixin_33483304的博客 193

MapGuide 添加临时点图层

下面代码是实现添加临时图层,并在临时图层上加点的功能,永久图层类似。 //AddLayer aspx.cs protected void Page_Load(object sender, EventArgs e) { NameValueCollection parameters = Request.HttpMethod == "P...

weixin_30532973的博客 149

PTA 学生信息的那些操作:添加记录(结构体)

这是河南工业大学自主命题的一道基础题,题目如下: 有一学生成绩表,包括学号、姓名、3门课程成绩。已知该成绩表按学号升序排序。请编程实现,添加一个新的学生信息,且使成绩表仍按学号有序;若待添加的学号与已有学号重复,则输出错误信息,拒绝添加。 输入格式: 首先输入一个整数n(1<=n<=100),表示学生人数; 然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示3门课成绩,数据之间用空格隔开。 最后一行输入一个待添加的学生信息,包括学号

weixin_63617665的博客 3156

Geotools创建Feature的两种方式

我们在操作矢量数据的无法避免的是与Feature打交道,在这里介绍两种关于Feature的创建方式,玩了那么久的GIS开发,无论哪种GIS二次开发,始终在模仿人在使用软件操作数据的流程,在学习的GIS开发的时候,首先应该明白,这个功能如果利用GIS商业软件,会有那些流程顺序,按照这个思路,很快就能掌握你所用开发的SDK包中,用那些类完成此任务再加上api事倍功半。 一...

weixin_30618985的博客 1289

用友U8自定义按钮开发:从基础配置到实战业务集成

本文详细介绍了用友U8自定义按钮开发的完整流程,从基础配置到实战业务集成。通过实际案例演示如何在U8系统中添加和替换功能按钮,包括数据库配置、SQL脚本编写和VB组件开发等关键技术点,帮助企业用户实现业务场景的深度定制。

weixin_29698641的博客 256

Keil5实战:如何高效导出变量数据并实现可视化分析

本文详细介绍了在Keil5开发环境中,如何利用调试脚本高效导出程序运行时变量数据的方法。通过编写脚本自动捕获数据并保存为文件,再结合Excel或Python进行可视化分析,为嵌入式调试与算法优化提供了数据支撑,显著提升开发效率。

silver的专栏 1104

MapGuide开发实例----程序实现切换地图

  我们在前面的文章中讲WebLayout(MapGuide应用开发系列(九)---- MapGuide Studio准备地图之网页布局)的时候卖了个关子,提到可以通过程序更改WebLayout的xml表示来达到通过程序切换地图的目的。今天我们就来讲一下具体如何实现。   我在前面的文章中讲过资源的概念,WebLayout也是资源的一种,也是由XML定义的。而且我们还知道资源直接是有引用关系的,网...

weixin_33716154的博客 273

Scratch 3.0角色控制避坑指南:为什么你的键盘移动总卡顿?

本文深入剖析了Scratch 3.0中角色移动卡顿的根本原因,指出依赖`当按下`事件积木的局限性。通过对比分析,推荐采用`重复执行`结合`如果<键被按下?>`的循环控制方案,并引入速度变量模拟惯性,从而实现流畅、实时的键盘控制优化,显著提升游戏操作体验。

dd012的博客 1013

要素源

广义地来讲,要素源是存储了要素的数据源,例如Oracle空间数据库、SHP文件等。在MapGuide中,要素源是一种存储在资源库中的资源,它定义了连接到某一种FDO Provider的参数、要素的空间参考系等信息。要素源资源的模式如图10‑14所示,表10‑6列出了要素源定义的一些主要元素。 名称描述Provider用于指定要素源

341

miRNA测序数据生信分析——第二讲,数据库下载整理

一个非编码RNA的整合数据库,可用来识别鉴定各种类型的ncRNA。提供的是ncRNA在基因组上的基因序列,而非转录成熟ncRNA的序列。最新版:2022-11-02Rfam数据库中ncRNA类型分三大类:Cis-reg和Gene和Intron。这三大类又有子类。一个提供包括miRNA序列数据、注释、预测基因靶标等信息的全方位数据库,是存储miRNA信息最主要的公共数据库之一。最新版:2018-12-01。

weixin_44616693的博客 4098

嘉立创EDA实战:4层板叠层设计避坑指南(附阻抗计算技巧)

本文详细解析了嘉立创EDA在4层PCB叠层设计中的实战技巧与避坑指南,涵盖经典叠层方案对比、介质厚度选择、电源系统设计及高速信号完整性优化。特别介绍了阻抗计算工具的应用,帮助工程师在高速电路设计中实现性能与成本的最佳平衡。

sea99的博客 965

资源服务(Resource Service)

    资源服务是用来管理资源和资源库的一种服务,它提供了四类API。管理资源库的API管理资源的API管理资源数据的API管理资源包的API    在使用这些API时,经常要使用资源ID来指定一个被操作的资源。如果指定的是文档,那么资源ID的扩展名必须与资源类型一致。例如:如下的资源ID必须是一个指向地图定义的资源。    $resourceID = new MgRe

2224

工业预测性维护实战:振动分析+Transformer预警系统构建指南

摘要:本文聚焦工业设备预测性维护难题,提出基于振动分析与Transformer模型的全栈解决方案。通过低成本硬件选型(单传感器¥380)实现设备振动信号实时采集,利用边缘计算单元完成特征工程(RMS、峰度、峰值频率提取),并在云端部署Transformer时序模型进行异常预警。某风电龙头企业实践显示,系统将故障误报率从38%降至6%,维护成本降低58%,非计划停机时长减少87%。文中提供完整的边缘端特征提取代码、云端模型架构及实施流程,适配ISO 13373振动分析标准,为制造业设备健康管理提供可复用的工程

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 625

要素类的复制方法

转自原文 要素类的复制方法   如何根据一个要素类(源要素类)在另一个工作空间中产生一个同字段,但空间范围可能不一致的要素类(目标要素类)?本文提供了完备的方法。   public ESRI.ArcGIS.Geodatabase.IFeatureClass CloneFeatureClass(ESRI.ArcGIS.Geodatabase.IFeatureClass srcFeat...

weixin_33728268的博客 456

Android14 Qcom 从Framework到Driver带你连接WIFI(一)

前面已经讲完了WIFI打开的流程,那么通过UI这时候是可以选择需要连接的网络进行连接。从这里开始我们看连接的流程。

IAYLBL的博客 695

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

向要素集中插入新要素

/// /// 向要素集中插入新要素 /// /// 要素集 /// 图形 /// private IFeatureBuffer CreateNewFeature(IFeatureClass pFeaClass, IFeature pFea, IGeometry pGeo) {

奚学长的工地 703

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

创建网络数据集的比较(shaefile和要素数据集)

创建网络数据集的比较------shaefile和要素数据集 原因 一般我都是按照要求在Arcmap的catalog中新建一个地理数据库,在其中创建一个要素数据集,将要用来创建的矢量数据导入,然后右击要素数据集,新建网络数据集来创建,偶然一次我看到我同学直接在某一矢量图层上右击创建,所以就对两种方式的创建进行了区分 创建操作对比 区别 类型 多源 多模式网络 备注 ...

qq_44353170的博客 768

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

arcengine 要素类的复制

using System; using System.Collections.Generic; using System.Text; using ESRI.ArcGIS.Geodatabase; using ESRI.ArcGIS.Geometry; using ESRI.ArcGIS.Carto; namespace MyGISClass { /// /// 该类主要包含了要素

蝉音荷律 1万+

复制要素类copyFeatureClass

转自:http://blog.youkuaiyun.com/chanyinhelv/article/details/8696538 非常感谢! --------------------------------------------------------------------------------------------------------- 1 using System; 2 ...

weixin_30314793的博客 301

ArcGIS Pro 创建网络数据集

Streets(起始节点)和 Walking_Pathways(起始节点),将下拉列表中的属性改为 F_ZLEV。Streets(终止节点)和 Walking_Pathways(终止节点),将下拉列表中的属性改为 T_ZLEV。例如,如果网络属性的单位是米,而源数据的单位是英尺,可以创建一个表达式以在构建网络数据集时将英尺转换为米。的成本属性,使用字段脚本赋值器中的 Shape 字段可以网络属性单位返回。在赋值器的边组中,将Street(沿)行的类型改为字段脚本。

D6868686的博客 2480

关系类处理专题之创建关系类|RelationShipClass

/// <summary> /// 存在于数据库中的数据集中 /// </summary> /// <param name="mdbPath">数据库路径</param> /// <param name="ORIFClassName">源要素类的名称</pa...

weixin_34186931的博客 146

ArcGIS教程:创建“隐形”图层

Geoprocessing是ArcGIS最重要的功能之一,当我们在进行地理处理的时候有没有遇到过以下类似的问题呢?   比如这个要素类中的数据可能并不都符合我的要求,我只需要对其中一部分进行地理处理;或者我希望对这份数据进行地理处理但同时我又不希望原有数据被破坏。   对于这样的问题,对数据做备份当然是一种很好的解决方法。   在这里笔者向大家介绍工具箱中的一个小工具,同样可以解决上面的问题

2791
上一篇: 获取要素源的能力
下一篇: 要素源
MapGuide_Inside
博客等级 码龄17年 340粉丝 71原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值