其他分享
首页 > 其他分享> > 【IDL代码库】解决IDL生成多边形矢量在ArcMap中不闭合问题

【IDL代码库】解决IDL生成多边形矢量在ArcMap中不闭合问题

作者:互联网

偶然发现的问题。

比如写出一个4个顶点的矩形矢量,在ArcGIS中如果设置不填充,竟然只有三个边。。。但是在ENVI中是显示正常的。后来请教同事后发现,是由于不闭合的原因。

 



废话不多说了,直接上代码。结果已经能够正常显示。

注意看顶点坐标设置的地方。

PRO test_create_shapefile_polygon

  COMPILE_OPT idl2

  ;启动ENVI是为了生成坐标系字符串

  envi, /restore_base_save_files

  ENVI_BATCH_INIT

 

  ;输出路径

  outFile = 'D:\testpolygon.shp'

 

  ;新建文件,设置类型为多边形

  oShp=OBJ_NEW('IDLffShape', outFile, /UPDATE, ENTITY_TYPE=5)

 

  ;添加属性,字符串类型(不然在ArcGIS中打不开)

  oShp->ADDATTRIBUTE, 'test name', 750, PRECISION=0

 

  ;新建一个Entity

  entNew = {IDL_SHAPE_ENTITY}

 

  entNew.SHAPE_TYPE = 5 ;多边形

 

  ;关键的地方来了。

  ;虽然是4个顶点的多边形,但是需要输入5个点坐标。

  ;最后1个点坐标和第1个点坐标一样。

  entNew.VERTICES = PTR_NEW([[110.0,30.0], $

   [110.0,40.0],[120.0,40.0],[120.0,30.0],[110.0,30.0]])

  entNew.N_VERTICES = 5 ;还要设置为5个顶点

 

  ;写入记录

  oShp.PutEntity, entNew

 

  ;为此条记录添加属性

  attrNew = oShp ->GETATTRIBUTES(/ATTRIBUTE_STRUCTURE)

  attrNew.ATTRIBUTE_0 = 'test'

  oShp.SetAttributes0, attrNew

 

  ;因为坐标经纬度,获取坐标系字符串,写入prj文件(.replace方法是IDL8.4新增的)

  oProj = ENVI_PROJ_CREATE(/GEOGRAPHIC)

  prjFile = outfile.replace('.shp','.prj')

  OPENW, lun, prjFile, /GET_LUN

  PRINTF, lun, oProj.PE_COORD_SYS_STR

  FREE_LUN, lun

 

  ;销毁

  OBJ_DESTROY, oShp

END

 

分享:  

标签:oShp,多边形,IDL,ENVI,ArcMap,坐标,entNew,lun
来源: https://www.cnblogs.com/enviidl/p/16318606.html