border 边框(复合样式,集合样式)

本文详细介绍了CSS中边框样式的设置方法,包括边框宽度、样式、颜色及圆角等属性。同时还讲解了如何使用border-image来为边框设置背景图片,并提供了各个属性的具体用法示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 border 边框(复合样式,集合样式)

       border-top

       border-right

       border-bottom

       border-left

       border-top-width          上

       border-right-width        右

       border-bottom-width   下

       border-left-width         

       border-style 边框样式

               solid          实线

               dashed      虚线

               dotted      点线

       border-top-style

       border-right-style

       border-bottom-style

       bordder-left-style

       border-color 边框颜色

              rgb(0-255,0-255,0-255);

       border-top-color

       border-right-color

       border-bottom-color

       border-left-color

       border-radius 圆角半径

              列:border-radius:10px 20px 30px 40px           

       border-width 边框宽度

  border-image 语法( 仅限谷歌 要加如前缀 -webkit-):

border-image-source 用在边框的图片的路径。  
border-image-slice 图片边框向内偏移。切割图片 两个值(上下或左右)不用加px  
border-image-width 图片边框的宽度。  
border-image-outset 边框图像区域超出边框的量。  
border-image-repeat 图像边框是否应平铺(repeated)、铺满(rounded)或拉伸(stretched)。   


       

<think>嗯,用户想用ArcGIS Pro SDK和C#根据SHP地块文件生成界址点文件,然后编号,再导出符合地籍规范的Word表格。首先,我需要理清楚整个流程的步骤。 首先,得读取SHP地块文件。可能需要使用ArcGIS Pro的Geoprocessing工具或者直接通过SDK的API来访问要素类。要确保能正确读取每个地块的几何形状,尤其是多边形边界,这样才能提取界址点。 接下来是生成界址点。界址点通常是地块边界的顶点,所以可能需要遍历每个多边形的点集合。这里要注意,可能需要排除重复的点,比如相邻地块共享的顶点,但用户没有提到这点,可能暂时不考虑。或者用户可能需要每个地块单独处理,不管是否重复。 然后是对每个地块的界址点进行排序。用户要求从上到下、从左到右编号。这里可能需要确定排序的逻辑。比如,先按Y坐标降序排列(上到下),然后按X坐标升序排列(左到右)。但具体到每个地块,可能需要先对地块的所有顶点进行坐标提取,然后按照这个规则排序,再编号。 编号完成后,需要生成界址点成果表,并且导出为Word。这里可能需要使用Word的API,比如Microsoft.Office.Interop.Word,或者Open XML SDK来创建表格。表格的样式要符合地籍调查规范,可能需要设置特定的表头、行列格式,以及内容排列。 考虑到ArcGIS Pro SDK主要使用C#,可能需要用到的库包括ArcGIS.Core.dll、ArcGIS.Desktop.Core等来处理地理数据,然后使用Open XML或者DocX库来生成Word文档。不过需要注意,DocX是一个第三方库,可能需要用户安装,而Open XML较为底层但不需要额外依赖。 可能的步骤是: 1. 遍历每个地块要素,获取几何顶点。 2. 对顶点进行排序。 3. 为每个顶点分配编号。 4. 将每个地块的界址点保存到新的要素类中,属性包含编号和坐标。 5. 生成成果表,可能需要每个地块生成一个表格,或者汇总所有地块。 6. 导出到Word,调整格式符合规范。 需要注意的问题: - 地块的顶点顺序是否正确,是否需要考虑多部分多边形(比如有洞的情况)。 - 坐标系统的问题,可能需要转换为适当的坐标系,确保坐标值的正确性。 - Word表格的样式,如字体、边框、标题行等,是否符合地籍规范。 - 处理大量数据时的性能问题,可能需要优化代码或分块处理。 另外,可能需要使用到ArcGIS Pro的异步操作,比如在Add-in中使用QueuedTask来执行地理处理任务。同时,界址点成果表的字段可能需要包含点号、坐标X、坐标Y、备注等信息。 最后,测试代码时,需要确保每个步骤的输出正确,尤其是排序和编号部分,以及Word表格的生成是否符合预期。可能需要提供代码示例,指导用户如何实现每个步骤,并处理可能出现的异常情况。</think>我将分步骤为您讲解如何通过ArcGIS Pro SDK实现该需求: 1. **环境准备** - 安装ArcGIS Pro SDK for .NET - 创建ArcGIS Pro Add-in项目(选择Map Tool或 DockPane模板) - 引用必要的程序集: ```csharp using ArcGIS.Core.Data; using ArcGIS.Core.Geometry; using ArcGIS.Desktop.Mapping; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Wordprocessing; ``` 2. **读取地块要素** ```csharp // 获取当前地图中的shp图层 FeatureLayer parcelLayer = MapView.Active.Map.GetLayersAsFlattenedList() .OfType<FeatureLayer>() .First(l => l.Name == "地块图层名称"); // 创建查询过滤器 QueryFilter queryFilter = new QueryFilter(); using (FeatureCursor cursor = parcelLayer.Search(queryFilter)) { Feature parcelFeature; while ((parcelFeature = cursor.Next()) != null) { Polygon parcelPolygon = parcelFeature.GetShape() as Polygon; // 处理每个地块多边形 } } ``` 3. **提取并排序界址点** ```csharp List<MapPoint> GetSortedPoints(Polygon polygon) { List<MapPoint> points = new List<MapPoint>(); // 获取所有环(考虑多部件多边形) foreach (ReadOnlyPart part in polygon.Parts) { foreach (MapPoint point in part.Points) { points.Add(point); } } // 按Y降序、X升序排序 return points .OrderByDescending(p => p.Y) .ThenBy(p => p.X) .ToList(); } ``` 4. **生成界址点要素类** ```csharp // 创建点要素图层 var pointFC = await CreateFeatureClass("界址点", SpatialReferenceBuilder.CreateSpatialReference(4527), FeatureClassType.Point); // 添加字段 await AddFields(pointFC, new[] { FieldDescription.CreateString("地块编号", 50), FieldDescription.CreateString("点号", 20), FieldDescription.CreateDouble("X坐标"), FieldDescription.CreateDouble("Y坐标") }); // 插入要素 using (TableTransaction transaction = pointFC.StartTransaction()) { foreach (var parcel in parcels) { int pointNum = 1; foreach (var point in sortedPoints) { Feature pointFeature = pointFC.CreateFeature(); pointFeature.SetValue("地块编号", parcel.GetOriginalValue("BH")); pointFeature.SetValue("点号", $"{parcelNum}-{pointNum++}"); pointFeature.SetValue("X坐标", point.X); pointFeature.SetValue("Y坐标", point.Y); pointFeature.SetShape(point); pointFeature.Store(); } } transaction.Commit(); } ``` 5. **生成Word成果表** ```csharp void CreateWordTable(string outputPath, List<BoundaryPoint> points) { using (WordprocessingDocument doc = WordprocessingDocument.Create(outputPath, WordprocessingDocumentType.Document)) { MainDocumentPart mainPart = doc.AddMainDocumentPart(); mainPart.Document = new Document(); Body body = mainPart.Document.AppendChild(new Body()); // 创建符合规范的表格 Table table = new Table(); TableProperties props = new TableProperties( new TableBorders( new TopBorder() { Val = BorderValues.Single, Size = 8 }, new BottomBorder() { Val = BorderValues.Single, Size = 8 }, new LeftBorder() { Val = BorderValues.Single, Size = 8 }, new RightBorder() { Val = BorderValues.Single, Size = 8 }, new InsideHorizontalBorder() { Val = BorderValues.Single, Size = 6 }, new InsideVerticalBorder() { Val = BorderValues.Single, Size = 6 })); // 添加表头 TableRow headerRow = new TableRow(); headerRow.Append( CreateCell("点号"), CreateCell("X坐标"), CreateCell("Y坐标"), CreateCell("备注")); table.Append(headerRow); // 填充数据 foreach (var point in points) { TableRow row = new TableRow(); row.Append( CreateCell(point.PointNumber), CreateCell(point.X.ToString("F3")), CreateCell(point.Y.ToString("F3")), CreateCell("")); table.Append(row); } body.Append(table); } } // 辅助方法:创建标准单元格 TableCell CreateCell(string text) { return new TableCell(new Paragraph(new Run(new Text(text)))); } ``` **注意事项**: 1. 坐标系处理:需确保使用与地籍调查一致的坐标系(如CGCS2000) 2. 编号规则:建议采用"地块编号-流水号"的复合编号方式 3. 成果表样式:需严格遵循《地籍调查规程》TD/T 1001-2012要求 4. 性能优化:对于大数据量建议分块处理,使用后台线程 **扩展功能建议**: 1. 添加自动标注功能 2. 实现界址点成果表模板化配置 3. 增加拓扑检查功能(如界址点重合检查) 4. 生成宗地图结合界址点成果表 建议在实现时参考《地籍调查数据库标准》和《城镇地籍数据库标准》相关规范要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值