创建要素源

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

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

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()来创建一个要素源。如果是文件类型的要素源,例如SHPSDFSQLite,还需要调用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>

### AWTRIX2.0 像素代码 GitHub 下载 要下载 AWTRIX2.0 的像素代码,可以通过其官方 GitHub 仓库获取。以下是具体的操作方式: #### 获取代码的方法 通过 Git 工具可以方便地克隆指定版本的代码到本地环境。根据已知的信息,建议使用 `0.22` 版本的分支来确保稳定性[^1]。 ```bash git clone -b 0.22 https://github.com/awtrix/AWTRIX2.0-Controller.git ``` 此命令会将 `AWTRIX2.0-Controller` 项目中的 `0.22` 分支克隆至当前工作目录下。如果未安装 Git,则可以从以下链接手动下载 ZIP 文件并解压: [https://github.com/awtrix/AWTRIX2.0-Controller/archive/refs/tags/v0.22.zip](https://github.com/awtrix/AWTRIX2.0-Controller/archive/refs/tags/v0.22.zip)[^1] #### 代码结构概述 在克隆完成后,进入项目的根目录即可找到与像素显示相关的文件夹和配置文件。通常情况下,核心功能位于以下几个部分: - **Pixel Clock 实现逻辑**:可能存在于 `/src/applications/pixelclock.js` 或类似的路径中。 - **LED 驱动程序**:涉及硬件控制的部分一般存储于 `/drivers` 或者 `/hardware` 子目录内。 - **文档说明**:README.md 和其他 `.md` 文档提供了详细的开发指南以及依赖项列表。 注意,在运行之前需确认满足所有必要的软件依赖条件,并按照 README 中给出的指导完成初始化设置过程[^1]。 ```javascript // 示例代码片段展示如何定义基本像素操作函数 function setPixel(x, y, color) { if (x >= 0 && x < width && y >= 0 && y < height) { pixels[y * width + x] = color; } } ``` 以上是一个简单的 JavaScript 函数例子用于演示单个像素点的颜色设定机制,实际应用时应参照完整的 API 定义[^1]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值