关于SHP文件
本示例内容可以参考CaseStudy目录下的文件"地图.Table"的示例二十六,该示例使用SHP文件绘制除了中国的所有湖泊:

SHP文件是另一种使用极为广泛的地理信息文件。
它不是一个单一的文件,而是一组文件。一个完整的Shapefile至少包含三个同名但扩展名不同的文件:
.shp:存储几何图形信息(点、线、面等的坐标)。
.shx:存储图形索引,用于快速查找。
.dbf:存储属性数据(例如,一个面代表一个国家,它的属性可能包括国名、人口、面积等)。
此外还可能有 .prj(存储坐标系信息)、.cpg(存储字符编码)等重要文件。
Foxtable只使用其中shp和dbf文件,如前所言,shp定义了形状,dbf定义了形状的附加信息。
如果想知道dbf文件附加了什么信息,可以将其导入到Foxtable查看。
提示:
Foxtable对GeoJson的支持更完善,通常我建议将SHP文件转换为GeoJson格式使用,可以使用QGIS转换,也可是使用在线转换工具:
https://mapshaper.org/
如果没有特别要求,Foxtable读取SHP文件和读取KML文件一样简单,不同的只是方法名变成了CreateRecordsFromSHP:
Dim map As GeoMap = e.Form.Controls("Map1").GeoMap
Dim layer As New VectorLayer()
map.Layers.Add(layer)
For Each kr As VectorRecord In map.CreateRecordsFromSHP(shp文件, dbf文件)
layer.Items.Add(kr.VectorItem)
Next
如果要根据形状类型进行细节设置,代码一般为:
Dim map As GeoMap = e.Form.Controls("Map1").GeoMap
Dim layer As New VectorLayer()
map.Layers.Add(layer)
For Each kr As VectorRecord In map.CreateRecordsFromSHP(shp文件, dbf文件)
layer.Items.Add(kr.VectorItem)
If TypeOf kr.VectorItem Is VectorPlacemark Then
Dim mark As VectorPlacemark =
kr.VectorItem
'设置标记的属性:
ElseIf TypeOf kr.VectorItem Is VectorPolyline Then
Dim line As VectorPolyline =
kr.VectorItem
'设置线条属性:
ElseIf TypeOf kr.VectorItem Is VectorPolygon Then
Dim polygon As VectorPolygon =
kr.VectorItem
'设置多变形属性:
End If
Next