Сообщество программистов Autodesk в СНГ

Разное => Разное => Тема начата: Herber от 07-12-2020, 19:47:31

Название: Как конвертировать autocad координаты в wsg84
Отправлено: Herber от 07-12-2020, 19:47:31
Подскажите плиз как можно это сделать. Неохота ковырять javascript на сайте geobridge
Название: Re: Как конвертировать autocad координаты в wsg84
Отправлено: trir от 07-12-2020, 20:02:04
Civil/Map 3D, QGIS(proj)
https://github.com/triroakenshield/RosReestrImpLib/blob/master/RRViewer1/kml/KmlConverter.cs

Код - C# [Выбрать]
  1.         private (double[] xys, double[] zs) ReprojectGeometry(TGeometry geometry)
  2.         {
  3.             var xys = geometry.GetXYArray();
  4.             var zs = geometry.GetZArray();
  5.             Reproject.ReprojectPoints(xys, zs, Projection, WGS1984, 0, zs.Length);
  6.             return (xys, zs);
  7.         }
Название: Re: Как конвертировать autocad координаты в wsg84
Отправлено: Herber от 07-12-2020, 20:47:46
Что такое ReprojectPoints и откуда оно взялось?
Название: Re: Как конвертировать autocad координаты в wsg84
Отправлено: Herber от 07-12-2020, 20:49:51
Попробовал своими силами, но координаты вообще левые получаются
Вот на входе
9877.662483,3764.885102

Вот что на выходе должно получиться
55.755711228,37.558133244

Код - C# [Выбрать]
  1. var csFact = new CoordinateSystemFactory();
  2. var ctFact = new CoordinateTransformationFactory();
  3.  
  4. var wkt = csFact.CreateFromWkt(
  5.                     "PROJCS[\" Московская СК(МГГТ)\",GEOGCS[\"unknown\", DATUM[\"Unknown based on Bessel 1841 ellipsoid\", SPHEROID[\"Bessel 1841\", 6377397.155,299.1528128],TOWGS84[316.151,78.924,589.65,-1.57273,2.69209,2.34693,8.4507]],PRIMEM[\"Greenwich\", 0,AUTHORITY[\"EPSG\", \"8901\"]], UNIT[\"degree\", 0.0174532925199433,AUTHORITY[\"EPSG\", \"9122\"]]], PROJECTION[\"Transverse_Mercator\"], PARAMETER[\"latitude_of_origin\", 55.66666666667],PARAMETER[\"central_meridian\",37.5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",16.098],PARAMETER[\"false_northing\",14.512],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]]");
  6.  
  7. var wgs84 = ProjectedCoordinateSystem.WGS84_UTM(33, true);
  8. var trans = ctFact.CreateFromCoordinateSystems(wkt, wgs84);
  9. double[] fromPoint = new double[] { 9877.662483, 3764.885102 };
  10. double[] toPoint = trans.MathTransform.Transform(fromPoint);
  11.  
Название: Re: Как конвертировать autocad координаты в wsg84
Отправлено: trir от 07-12-2020, 20:54:58
Цитировать
ProjectedCoordinateSystem.WGS84_UTM(33, true);
это UTM (https://ru.wikipedia.org/wiki/%D0%A3%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BE%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%BD%D0%B0%D1%8F_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%86%D0%B8%D1%8F_%D0%9C%D0%B5%D1%80%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D0%B0)!
Название: Re: Как конвертировать autocad координаты в wsg84
Отправлено: Herber от 07-12-2020, 20:58:25
var wgs84 = GeographicCoordinateSystem.WGS84;

изменил и всё получилось)
Название: Re: Как конвертировать autocad координаты в wsg84
Отправлено: trir от 07-12-2020, 21:03:40
Откуда GeographicCoordinateSystem?

Цитировать
Что такое ReprojectPoints и откуда оно взялось?
using DotSpatial.Projections;
https://github.com/DotSpatial/DotSpatial/tree/master/Source/DotSpatial.Projections
это порт proj на C#

Тебе координаты WGS84 вообще зачем нужны?
Название: Re: Как конвертировать autocad координаты в wsg84
Отправлено: Herber от 07-12-2020, 21:23:17
Хочу конвертировать их в KML

1) Вижу две проблемы - x и y заменены местами
2) Системе не нравятся мои координаты. Что не так с ними?
55.755711,37.558133,0 55.757380,37.556344,0 55.757812,37.555555,0 55.757600,37.554993,0 55.755896,37.556580,0 55.755842,37.556388,0 55.755684,37.556565,0 55.755775,37.556777,0 55.755437,37.557176,0 55.755345,37.556942,0 55.755307,37.556984,0 55.755711,37.558133,0
Название: Re: Как конвертировать autocad координаты в wsg84
Отправлено: trir от 07-12-2020, 21:27:59
Цитировать
x и y заменены местами
поменяй

у меня открывается
Код - XML [Выбрать]
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Document xmlns="http://www.opengis.net/kml/2.2">
  3.   <Placemark>
  4.     <name>SpatialElement</name>
  5.     <description />
  6.     <LineString>
  7.       <coordinates>
  8.           37.558133,55.755711,0
  9.           37.556344,55.757380,0
  10.       </coordinates>
  11.     </LineString>
  12.   </Placemark>
  13. </Document>
Название: Re: Как конвертировать autocad координаты в wsg84
Отправлено: trir от 07-12-2020, 22:02:35
В Map 3D же есть экспорт в kml, а в Civil 3D дополнительно свой
Название: Re: Как конвертировать autocad координаты в wsg84
Отправлено: Herber от 10-12-2020, 14:26:35
Все таки точность хромает, подскажите как можно epsg московской области найти?
Название: Re: Как конвертировать autocad координаты в wsg84
Отправлено: Herber от 10-12-2020, 14:29:09
+title= Московская СК (МГГТ)    +proj=tmerc +lat_0=55.66666666667 +lon_0=37.5 +k=1 +x_0=16.098 +y_0=14.512 +ellps=bessel +towgs84=316.151,78.924,589.650,-1.57273,2.69209,2.34693,8.4507 +units=m +no_defs

вот такие параметры на geobridge. В нем координаты чётко рисуются на карте. Я сконвертировал его через питон-скрипт в wkt, но у меня точность хромает. Координаты чуть смещены

Мне нужна  wkt строка. Зашёл на http://epsg.io/3857  - взял оттуда wkt строку, вообще левые координаты.
Название: Re: Как конвертировать autocad координаты в wsg84
Отправлено: trir от 10-12-2020, 16:01:33
а если в самом Civil'е её добавить - какая ошибка будет?
Название: Re: Как конвертировать autocad координаты в wsg84
Отправлено: Herber от 10-12-2020, 16:23:23
так у меня ж автокад обычный
Название: Re: Как конвертировать autocad координаты в wsg84
Отправлено: Herber от 10-12-2020, 16:29:13
Координаты в автокад
          в точке  X=9877.662483  Y=3764.885102  Z= 0.000000
          в точке  X=10063.396960  Y=3652.410869  Z= 0.000000
          в точке  X=10111.434188  Y=3602.817318  Z= 0.000000
          в точке  X=10087.768000  Y=3567.537000  Z= 0.000000
          в точке  X=9898.099000  Y=3667.376000  Z= 0.000000
          в точке  X=9892.133000  Y=3655.297000  Z= 0.000000
          в точке  X=9874.510000  Y=3666.401000  Z= 0.000000
          в точке  X=9884.710000  Y=3679.700000  Z= 0.000000
          в точке  X=9847.125000  Y=3704.815000  Z= 0.000000
          в точке  X=9836.825000  Y=3690.147000  Z= 0.000000
          в точке  X=9832.612039  Y=3692.779056  Z= 0.000000
          в точке  X=9877.662483  Y=3764.885102  Z= 0.000000
Координаты как они должны быть на выходе
37.655275857,55.700723619
37.658225873,55.699709643
37.658988079,55.699263221
37.658610408,55.698946824
37.655597434,55.699847401
37.655502119,55.699739029
37.655222228,55.699839116
37.655384925,55.699958361
37.654788040,55.700184690
37.654623705,55.700053150
37.654556793,55.700076875
37.655275857,55.700723619

Координаты которые выдаёт мой код

37.655275860901,55.7007236451868
37.6582258775078,55.6997096698396
37.6589880827861,55.6992632476724
37.6586104124046,55.6989468508733
37.6555974376768,55.6998474271545
37.6555021227552,55.6997390554342
37.6552222319942,55.6998391424061
37.6553849294582,55.6999583873745
37.6547880445611,55.700184716945
37.6546237092003,55.700053177079
37.6545567966732,55.7000769016622
37.655275860901,55.7007236451868
Название: Re: Как конвертировать autocad координаты в wsg84
Отправлено: trir от 10-12-2020, 17:33:02
Цитировать
так у меня ж автокад обычный
твой код в нём бы не заработал

между 37.655275857,55.700723619 и 37.655275860901,55.7007236451868 - разница 3 милиметра
Название: Re: Как конвертировать autocad координаты в wsg84
Отправлено: Herber от 10-12-2020, 22:34:57
так работает же)
Название: Re: Как конвертировать autocad координаты в wsg84
Отправлено: trir от 10-12-2020, 22:38:38
Цитировать
так работает же)
у тебя стоит Map 3D
Название: Re: Как конвертировать autocad координаты в wsg84
Отправлено: Herber от 10-12-2020, 23:37:59
https://geodesist.ru/threads/kak-konvertirovat-koordinaty-iz-autocad-v-kml.86225/#post-982013
вот тут продолжил