乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 85|回复: 4

需要在VB.NET的一个小项目的开发者$

[复制链接]

12

主题

20

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
68
发表于 2018-2-1 09:19:01 | 显示全部楼层 |阅读模式
通过私人消息向我发送估价和小时费率
基本导入Autocad MAP 3D
1。使用dotspatial导入折线/直线2。用于选择我要导入的图层的选项
3。导入信号时的进度条

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

7

主题

60

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
88
发表于 2018-2-15 10:59:28 | 显示全部楼层
你没有回复我,但我最后还是用C#写了你想要的东西。
导入shapefile是最容易的部分。更有趣的部分是绘制坐标系和实体的代码。
问题是,dotspatial没有像CA83-VIF那样通过“简称”指定坐标系统的简单方法。
您必须使用autodesk(免费)的Mapguide API,获取数字代码,然后输入到dotspatial。
下面是我如何访问shapefile及其功能,并获得点和pline属性的简化列表。
您可以适应获取文本和其他特征道具。我检查了一下,这个特性中有“gis数据”,只是我还没有用它做任何事情。
  1. //returns lists of (("point", color, width, coord)("polyline", color, width, coords)..)
  2.         public List GetFromShpFile(string shpfname, string sourceSystem, string targetSystem, bool StartingProgress) {
  3.             if (StartingProgress) StartProgress("Reading Shapefile...", 2, true);
  4.             //make list of return objects
  5.             List> retItems = new List>();
  6.             try {
  7.                 //get epsg codes
  8.                 MgCoordinateSystemFactory coordSysFactory = new MgCoordinateSystemFactory();
  9.                 string baseSysWkt = coordSysFactory.ConvertCoordinateSystemCodeToWkt(sourceSystem);
  10.                 string targetSysWkt = coordSysFactory.ConvertCoordinateSystemCodeToWkt(targetSystem);
  11.                 MgCoordinateSystem srcCs = coordSysFactory.Create(baseSysWkt);
  12.                 MgCoordinateSystem dstCs = coordSysFactory.Create(targetSysWkt);
  13.                 int srccode = srcCs.EpsgCode;
  14.                 int tgtcode = dstCs.EpsgCode;
  15.                 //now read into dotspacial
  16.                 Shapefile sf = Shapefile.OpenFile(shpfname);
  17.                 //look at sf.ProjectionString
  18.                 if (!File.Exists(Path.GetDirectoryName(shpfname) + "\" + Path.GetFileNameWithoutExtension(shpfname) + ".prj"))
  19.                     sf.Projection = ProjectionInfo.FromEpsgCode(srccode);
  20.                 sf.Reproject(ProjectionInfo.FromEpsgCode(tgtcode));
  21.                 //loop through items
  22.                 //will be DotSpatial.Topology.FeatureType. Line, Point, MultiPoint, Polygon, Unspecified
  23.                 bool DoClose = false;
  24.                 DoClose = DoProgress("Reading linework...", sf.Features.Count);
  25.                 int index = 0;
  26.                 int done = 0;
  27.                 foreach (Feature ft in sf.Features) {
  28.                     if (!DoClose) {
  29.                         //message every 10 items
  30.                         if (done == 9) {
  31.                             DoClose = DoProgressBy("Reading linework...", index);
  32.                             done = 0;
  33.                         }
  34.                         DotSpatial.Topology.FeatureType typ = ft.FeatureType;
  35.                         string color = "";
  36.                         string width = "";
  37.                         if (typ == FeatureType.Line || typ == FeatureType.Polygon) {
  38.                             //coords
  39.                             StringBuilder coords = new StringBuilder("");
  40.                             foreach (Coordinate crd in ft.Coordinates) {
  41.                                 coords.Append(new CE.Point(crd.X, crd.Y, (double.IsNaN(crd.Z) ? 0.0 : crd.Z)).ToXYZString());
  42.                                 coords.Append(" ");
  43.                             }
  44.                             if (coords.Length > 0)
  45.                                 retItems.Add(new List() { "polyline", color, width, coords.ToString() });
  46.                         }
  47.                         else if (typ == FeatureType.Point) {
  48.                             //coords
  49.                             StringBuilder coords = new StringBuilder("");
  50.                             foreach (Coordinate crd in ft.Coordinates) {
  51.                                 coords.Append(new CE.Point(crd.X, crd.Y, (double.IsNaN(crd.Z) ? 0.0 : crd.Z)).ToXYZString());
  52.                                 coords.Append(" ");
  53.                             }
  54.                             if (coords.Length > 0)
  55.                                 retItems.Add(new List() { "point", color, width, coords.ToString() });
  56.                         }
  57.                         else if (typ == FeatureType.MultiPoint) {
  58.                             //coords
  59.                             StringBuilder coords = new StringBuilder("");
  60.                             foreach (Coordinate crd in ft.Coordinates) {
  61.                                 retItems.Add(new List() { "point", color, width, new CE.Point(crd.X, crd.Y, (double.IsNaN(crd.Z) ? 0.0 : crd.Z)).ToXYZString() });
  62.                             }
  63.                         }
  64.                         else if (typ == FeatureType.Unspecified) {
  65.                         }
  66.                     }
  67.                     index++;
  68.                     done++;
  69.                 }
  70.                 EndProgress(StartingProgress);
  71.             }
  72.             catch { }
  73.             finally {
  74.                 CloseProgress(StartingProgress);
  75.             }
  76.             return new List() { retItems };
  77.         }

您可以忽略与进度相关的项目,但Norman Yuan在
http://drive-CAD-with-code . blogspot . ca/2015/04/showing-progress-for-long-code . html
我提到的mapguide引擎就是autodesk在Map3D中使用的。这很疯狂,但他们实际上是免费赠送的,你可以在任何地方使用。你想要的. net程序。
我们在Bricscad和basic acad中使用它进行许多事情,例如制作和导入kmz。
我无法发布我的整个程序。我们公司还没有销售任何软件。
回复

使用道具 举报

7

主题

60

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
88
发表于 2018-2-15 11:26:51 | 显示全部楼层
顺便说一句,Dotsoft有便宜的完整工具来导入和导出形状文件,比我给你的信息量便宜<相信我,他的代码也不是vb.net。有经验的人使用C#,因为它感觉更像是C++而好的助手大多是C++人。
回复

使用道具 举报

12

主题

20

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
68
发表于 2018-2-22 07:16:49 | 显示全部楼层


,你必须原谅我没有联系你,我已经有一个程序员
从那时起,我一直没有使用计算机,直到现在
感谢jmaeding的C#代码
,我上传了我从程序员那里得到的代码
,如果有人感兴趣并且可以使用代码
---
这就是兴趣导入dotspatial的原因
,如果你去这个网站,那么在一起开发更多软件中
,你可以看到CAD软件和他们中的许多人没有选项导入SHP文件
https://www.intellicad.org/
我已经完成了购买ZWCAD,但我更喜欢progeCAD
问候
Sigster
回复

使用道具 举报

7

主题

60

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
88
发表于 2018-2-22 11:19:25 | 显示全部楼层
没问题,我为我的工具做了工作,这些工具在acad、bricscad中运行,可以为任何有. net api的东西运行。
您的代码跳过了处理坐标系——这是任务中比较棘手的部分之一。
如我所说,问题是让用户容易地选择系统,因为他们通常知道短名称,但是dotspacial不处理短名称。
此外,它不会对附着的数据进行任何操作,例如设置高程或图层。
在我看来,点空间部分很容易理解,它是坐标系统,使用附加数据,并在acad中绘制项目,这很有趣。
我已经从我的kmz导入工具中获得了这些部分,所以只需切换出生成细分信息的部分。比如玩乐高。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 11:06 , Processed in 0.162414 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表