N_PARTS和Parts
处理复杂对象的需要注意了,如有内环的多边形。所有的拐点坐标都存在vertices中,Parts也是一个指针数组,存储的是每个弧段的起始索引值。N_PARTS表示有几个弧段.
ISHAPE
表示实体的序号,是一个整形变量,读取的时候一般不需要注意,写的时候需要定义,序号不能重复。
4.开始读坐标了
如果要一次性读取全部实体,可以用ent=oshp->getentity(/all),但大部分时间都需要一个个的处理,就需要用循环
pro readshapefile
shapefile='C:\ESRI\ESRIDATA\WORLD\country.shp' ;定义shape文件位置
oshp=Obj_New('IDLffShape',filename)
oshp->getproperty,n_entities=n_ent,Attribute_info=attr_info,n_attributes=n_attr,Entity_type=ent_type
FOR i=0,n_ent-1 do begin ;循环
ent=oshp->getentity(i) ;读取第i个实体
bounds=ent.bounds ;读取实体的边界
n_vert=ent.n_vertices ;实体中包括拐点或顶点的个数,只有polyline和polygon具有该属性
vert=*(ent.vertices) ;实体的顶点,只有polyline和polygon具有该属性
n_parts=ent.parts ;只有polygon具有该属性
part=*(ent.parts) ;part坐标
;输出几何体范围
print,'min x=',bounds[0]
print,'min y=',bounds[1]
print, 'max x=',bound[3]
print, 'max y=',bound[4]
;如果是点的话,输出点坐标
print,bounds[0],bounds[1]
;如果是线或面的话,输出点坐标
for index in n_vert-1 do begin
print vert[in