shapewrite
将地理矢量数据结构写入 shapefile
说明
示例
导入 shapefile,移除部分数据,并将修改后的数据写入新的 shapefile。
获取关于 shapefile 的结构信息。该 shapefile 包含马萨诸塞州康科德市道路网段的网络数据。
shapeinfo("concord_roads.shp")ans = struct with fields:
Filename: [3×72 char]
ShapeType: 'PolyLine'
BoundingBox: [2×2 double]
NumFeatures: 609
Attributes: [5×1 struct]
CoordinateReferenceSystem: [1×1 projcrs]
NumFeatures 字段表示该 shapefile 包含 609 要素。
将 shapefile 导入为地理空间表。
GT = readgeotable("concord_roads.shp");shapefile 的 CLASS 属性包含道路类型的信息。例如,值为 2 表示多车道高速公路,值为 6 表示次要道路。创建一个子表,其中包含主要道路,使得 CLASS 的值小于 4。
rows = GT.CLASS < 4; majorGT = GT(rows,:);
将地理空间表导出为 shapefile 格式。
shapewrite(majorGT,"main_concord_roads.shp")获取新 shapefile 的结构信息。
shapeinfo("main_concord_roads.shp")ans = struct with fields:
Filename: [3×77 char]
ShapeType: 'PolyLine'
BoundingBox: [2×2 double]
NumFeatures: 107
Attributes: [5×1 struct]
CoordinateReferenceSystem: [1×1 projcrs]
新 shapefile 包含的是 107 要素而非 609 要素。
读取包含世界城市矢量数据的 shapefile 文件。使用 mappoint 函数将数据存储为平面点向量。
S = shaperead("worldcities.shp");
p = mappoint(S)p =
318×1 mappoint vector with properties:
Collection properties:
Geometry: 'point'
Metadata: [1×1 struct]
Feature properties:
X: [-3.9509 54.7589 -0.2121 35.3894 38.7575 138.8528 44.5408 72.2474 30.4098 3.0397 77.0010 35.9214 75.0498 4.8892 -149.1074 32.9496 122.8003 47.5258 -71.4434 40.6098 58.6638 38.8593 -57.5113 23.5183 -84.3489 174.7379 44.4258 … ] (1×318 double)
Y: [5.2985 24.6525 5.6106 37.0613 9.0235 -34.6645 12.8767 22.7778 31.3044 36.7870 43.3620 31.7444 31.7744 52.3699 61.6040 39.7831 41.4673 -18.9141 -16.3867 64.7383 38.0316 15.3042 -25.1162 38.0164 33.7657 -36.9126 33.3449 -38.7281 … ] (1×318 double)
Name: {1×318 cell}
将德国帕德博恩添加到点向量中。
x = 51.715254; y = 8.75213; p = append(p,x,y,"Name","Paderborn")
p =
319×1 mappoint vector with properties:
Collection properties:
Geometry: 'point'
Metadata: [1×1 struct]
Feature properties:
X: [-3.9509 54.7589 -0.2121 35.3894 38.7575 138.8528 44.5408 72.2474 30.4098 3.0397 77.0010 35.9214 75.0498 4.8892 -149.1074 32.9496 122.8003 47.5258 -71.4434 40.6098 58.6638 38.8593 -57.5113 23.5183 -84.3489 174.7379 44.4258 … ] (1×319 double)
Y: [5.2985 24.6525 5.6106 37.0613 9.0235 -34.6645 12.8767 22.7778 31.3044 36.7870 43.3620 31.7444 31.7744 52.3699 61.6040 39.7831 41.4673 -18.9141 -16.3867 64.7383 38.0316 15.3042 -25.1162 38.0164 33.7657 -36.9126 33.3449 -38.7281 … ] (1×319 double)
Name: {1×319 cell}
p 的大小增加了 1。
将更新后的点向量写入 shapefile。
shapewrite(p,"worldcities_updated.shp")输入参数
矢量地理特征,指定为以下之一:
一个地理空间表。
shapewrite函数不支持包含多种形状对象类型的地理空间表。有关地理空间表的更多信息,请参阅Create Geospatial Tables。一个
mappoint向量。一个
mapshape向量。一个具有
X和Y坐标字段的地图结构体数组 (mapstruct)。一个
geopoint向量。一个
geoshape向量。一个地理结构体数组 (
geostruct),包含Lat和Lon字段。
S 对其属性字段有以下限制:
每个属性字段的值必须是实数、有限的标量
double或字符向量。给定属性的类型必须在所有特征中保持一致。
若
S是包含geopointshape、geolineshape或geopolyshape对象的地理空间表,或包含geopoint向量、geoshape向量或地理结构体数组,则shapewrite函数将纬度值和经度值分别写入为 Y 和 X 坐标。若某个属性对所有特征均为整数值,则
shapewrite将其作为整数写入[basename '.dbf']文件。若某特征的属性值非整数,shapewrite将其写入为固定小数点十进制数,小数点后保留六位。
用于创建 shapefile 的文件名和位置,指定为字符串标量或字符向量。若包含文件扩展名,则必须为 .shp 或 .SHP。
shapewrite 函数创建主文件 (.shp)、索引文件 (.shx) 和属性文件 (.dbf)。
若将包含坐标参考系 (CRS) 对象的地理空间表指定为 S,则该函数还会创建一个投影文件 (.prj),其中包含该 CRS 的标准文本 (WKT) 字符串表示形式。要从包含平面形状对象的地理空间表创建投影文件,必须确保形状的 ProjectedCRS 属性不为空。要从包含地理形状对象的地理空间表创建投影文件,必须确保形状的 GeographicCRS 属性不为空。您可以使用 struct2geotable 函数将结构体数组转换为地理空间表。
所有文件都具有相同的基础名称。例如,若将 filename 指定为 "myfile.shp",则该函数将生成 myfile.shp、myfile.shx、myfile.dbf 和 myfile.prj。
需包含在 shapefile 中的特征属性,以标量 MATLAB® 结构指定,该结构包含每个特征属性对应的字段。为该字段分配一个标量结构,包含以下四个字段:
FieldName- 文件中使用的字段名称FieldType- 文件中使用的字段类型:'N'(数字)或'C'(字符)FieldLength- 文件中字段的长度,单位为字节FieldDecimalCount- 对于数字字段,小数点右侧的位数
要创建 DBF 规范,请调用 makedbfspec,然后修改输出以删除属性,或为一个或多个属性更改 FieldName、FieldLength 或 FieldDecimalCount。
要在输出文件中包含某个属性,请在 dbfspec 中指定一个与该属性在 S 中所用名称相同的字段。
详细信息
shapefile 格式的数据文件通过多个文件存储矢量数据:主文件 (.shp)、索引文件 (.shx) 和属性文件 (.dbf)。shapefile 格式的文件还可包含可选文件,例如投影文件 (.prj)。所有文件都具有相同的基础名称,例如 myfile.shp、myfile.shx 和 myfile.dbf。
提示
xBASE(
.dbf) 文件规范要求,当作为 DBF 字段名复制时,geostruct 和 mapstruct 属性名称需截断为 11 个字符。在调用shapewrite之前,请考虑缩短过长的字段名称。通过这种方式,您能使 DBF 文件中的字段名称更易于阅读,并避免因截断操作导致名称重复的情况。请确保将字符编码方案设置为与您要导出的地理数据结构相匹配。例如,若要导出显示日文文本的地图,请将您的设备配置为支持
Shift-JIS字符编码。
版本历史记录
在 R2006a 之前推出当您将包含坐标参考系 (CRS) 对象的地理空间表指定为 S 时,shapewrite 函数将创建一个投影文件 (.prj),该文件包含 CRS 的标准文本 (WKT) 字符串表示形式。
当文本属性包含超过 254 个字符时,shapewrite 函数会发出警告并将文本截断为 254 个字符。在之前的版本中,shapewrite 函数不会截断文本,因此生成的文件不符合 shapefile 规范。
当文本属性包含的字符数超过 dbfspec 参数中 FieldLength 字段存储的值时,shapewrite 函数将发出警告并截断文本,使其字符数等于 FieldLength 的值。在之前的版本中,shapewrite 函数会引发错误。
shapewrite 函数接受地理空间表作为输入。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)