Страница 1 из 1

Отображение полигона "с учетом кривизны Земли"

Добавлено: 17 мар 2013, 17:32
novice
Есть координаты 4 точек. Система координат esriSRGeoCS_WGS1984 или esriSRProjCS_World_Mercator.
Когда рисую полигон в этой системе координат, то его стороны прямые линии.

Цель: нарисовать полигон, чтобы его стороны были кривыми линиями. Т.е. чтобы изображение полигона в системе координат WGS1984 соответствовало реальным данным. Т.е. надо нарисовать полигон в СК, отличной от той в которой нарисована карта.

Подскажите, пожалуйста, 1) как нарисовать полигон в СК(или проекции), отличной от той в которой нарисована карта(можно ли это сделать в принципе?).
2) Какую СК(или проекцию) выбрать, чтобы полигон, отображался "с учетом кривизны Земли"?

Re: Отображение полигона "с учетом кривизны Земли"

Добавлено: 17 мар 2013, 17:37
novice
Полигон добавляется сейчас, например, таким образом. Код писал не я, поэтому он написан так криво.

Код: Выделить всё

                IPolygon m_Polygon = new Polygon() as IPolygon;
                object o = Type.Missing;
                for (int i = 0; i < m_RegionInfo.count_vertexes; ++i)
                {
                    IPoint point = new ESRI.ArcGIS.Geometry.Point();
                    IPointCollection m_PointCollection = (IPointCollection)m_Polygon;
                    point.PutCoords(m_RegionInfo.arr_x[i], m_RegionInfo.arr_y[i]);
                    m_PointCollection.AddPoint(point, ref o, ref o);
                }
                if (m_Polygon != null)
                {
                    IElement element = new PolygonElement();                    
                    IPolygonElement polygonElement = (IPolygonElement)element;
                    IFillShapeElement fill_element = (IFillShapeElement)polygonElement;

                   // fill_element.Symbol = GetFillSymbol1(fill_element, m_RegionInfo.Color.GetRGB(), m_RegionInfo.Color.GetRGB(), 
                   //                                       false, false);
                   
                    ESRI.ArcGIS.Display.SimpleFillSymbol symbolFill = new ESRI.ArcGIS.Display.SimpleFillSymbol();
                    ILineSymbol lineSymbol1 = new SimpleLineSymbol();
                    lineSymbol1.Color = m_RegionInfo.Color.GetRGB(165, 165, 165);
                    lineSymbol1.Width = 0.8;
                    symbolFill.Color = m_RegionInfo.Color.GetRGB();
                    symbolFill.Outline = lineSymbol1;
                    symbolFill.Style = ESRI.ArcGIS.Display.esriSimpleFillStyle.esriSFSDiagonalCross;
                    fill_element.Symbol = symbolFill;
                    element.Geometry = m_Polygon;
                    element.Locked = m_RegionInfo.IsLocked;

                    Map1.ActiveView.GraphicsContainer.AddElement(element, 0);

Re: Отображение полигона "с учетом кривизны Земли"

Добавлено: 17 мар 2013, 18:13
Максим Дубинин
если добавите достаточно промежуточных узлов (densify), то дальше проекционное преобразование даст
изогнутую, а не прямую, линию, если таковая подразумевается выбранной проекцией.

вот тут старое обсуждение на эту тему.

Re: Отображение полигона "с учетом кривизны Земли"

Добавлено: 18 мар 2013, 09:11
novice
Спасибо за ответ.

Re: Отображение полигона "с учетом кривизны Земли"

Добавлено: 18 мар 2013, 09:15
novice
Можно ли решить эту задачу, используя "точки ортодромии" и "рисуя отрезки ортодромии"?

Re: Отображение полигона "с учетом кривизны Земли"

Добавлено: 18 мар 2013, 09:27
novice
Насколько я понимаю последовательность такова.
1) Создать полилинию из двух точек.
2) С помощью densify увеличить количество точек, например, до 200.
3) Нарисовать на карте.

Но мне не понятно, будет ли подобная полилиния кривой? Т.е. мне не понятно как взаимосвязана СК WGS 1984(в этой системе координат или проекции изображена вся Земля целиком) и линия соединяющая две точки на карте. Если бы система координат(для всей карты целиком) была бы прямоугольной(например, это была бы одна зона из UTM или СК-42) то линия соединяющая две точки - всегда прямая(сколько бы промежуточных точек мы бы не задали)

А в СК WGS 1984 это прямая станет кривой(если задать 200 промежуточных точек)?

Re: Отображение полигона "с учетом кривизны Земли"

Добавлено: 18 мар 2013, 11:15
novice
И вот еще проблема: как мне указать с какой стороны угла рисовать линию?
Насколько я понимаю две точки в системе WGS 84 можно соединить прямой двумя способами.
Подскажите, пожалуйста, как задать угол(вогнутость) у прямой, соединяющей две точки?