- 积分
- 1760
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2015-9-9
- 最后登录
- 1970-1-1
|
发表于 2020-5-9 10:37:33
|
显示全部楼层
pro readshapefile
shapefile='D:\map_china\全国省级、地市级、县市级行政区划shp\省界bou2_4m\bou2_4l.shp'
oshp=Obj_New('IDLffShape',shapefile)
print,oshp
;中间处理代码
; Obj_destroy,oshp ;销毁一个shape对象
oshp->getproperty,n_entities=n_ent,Attribute_info=attr_info,n_attributes=n_attr,Entity_type=ent_type
print,'实体个数:',n_ent
print,'属性表字段数:',n_attr
print,'实体类型代码:',ent_type
;Obj_destroy,oshp ;销毁一个shape对象
; FOR i=0,n_attr-1 do begin ;循环
; PRINT, '字段序号: ',i
; PRINT, '字段名: ', attr_info[i].name
; PRINT, '字段类型代码: ', attr_info[i].type
; PRINT, '字段宽度: ', attr_info[i].width
; PRINT, '精度: ', attr_info[i].precision
; endfor
; stop
FOR i=0,n_ent-1 do begin ;循环
ent=oshp->getentity(i) ;读取第i个实体
; attr=oshp->GetAttributes(i) ;读取第i个记录
; for index=0, n_attr-1 do begin
; print,attr(index)
; endfor
; stop
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=',bounds[3]
; print, 'max y=',bounds[4]
;如果是点的话,输出点坐标
;print,bounds[0],bounds[1]
;help,bounds,vert
;如果是线或面的话,输出点坐标
;for i=0,n_vert-1 do begin
;endfor
; for index in n_vert-1 do begin
; print vert[index][0],vert[index][1]
;endfor
p=plot(vert(0,*),vert(1,*),xrange=[60,140],yrange=[0,60],/overplot,AXIS_STYLE=0)
print,i
endfor
Obj_destroy,oshp ;销毁一个shape对象
end
这是快速可视化的读取,可以参考下 |
|