Есть координаты 4 точек. Система координат esriSRGeoCS_WGS1984 или esriSRProjCS_World_Mercator.
Когда рисую полигон в этой системе координат, то его стороны прямые линии.
Цель: нарисовать полигон, чтобы его стороны были кривыми линиями. Т.е. чтобы изображение полигона в системе координат WGS1984 соответствовало реальным данным. Т.е. надо нарисовать полигон в СК, отличной от той в которой нарисована карта.
Подскажите, пожалуйста, 1) как нарисовать полигон в СК(или проекции), отличной от той в которой нарисована карта(можно ли это сделать в принципе?).
2) Какую СК(или проекцию) выбрать, чтобы полигон, отображался "с учетом кривизны Земли"?
Отображение полигона "с учетом кривизны Земли"
-
- Гуру
- Сообщения: 527
- Зарегистрирован: 21 окт 2012, 00:17
- Репутация: 15
- Ваше звание: developer
Отображение полигона "с учетом кривизны Земли"
Последний раз редактировалось novice 18 мар 2013, 09:12, всего редактировалось 1 раз.
-
- Гуру
- Сообщения: 527
- Зарегистрирован: 21 окт 2012, 00:17
- Репутация: 15
- Ваше звание: developer
Re: Отображение полигона "с учетом кривизны Земли"
Полигон добавляется сейчас, например, таким образом. Код писал не я, поэтому он написан так криво.
Код: Выделить всё
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);
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9129
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 748
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Отображение полигона "с учетом кривизны Земли"
если добавите достаточно промежуточных узлов (densify), то дальше проекционное преобразование даст
изогнутую, а не прямую, линию, если таковая подразумевается выбранной проекцией.
вот тут старое обсуждение на эту тему.
изогнутую, а не прямую, линию, если таковая подразумевается выбранной проекцией.
вот тут старое обсуждение на эту тему.
пристегивайтесь, турбулентность прямо по курсу
-
- Гуру
- Сообщения: 527
- Зарегистрирован: 21 окт 2012, 00:17
- Репутация: 15
- Ваше звание: developer
Re: Отображение полигона "с учетом кривизны Земли"
Спасибо за ответ.
Последний раз редактировалось novice 19 мар 2013, 15:10, всего редактировалось 1 раз.
-
- Гуру
- Сообщения: 527
- Зарегистрирован: 21 окт 2012, 00:17
- Репутация: 15
- Ваше звание: developer
Re: Отображение полигона "с учетом кривизны Земли"
Можно ли решить эту задачу, используя "точки ортодромии" и "рисуя отрезки ортодромии"?
-
- Гуру
- Сообщения: 527
- Зарегистрирован: 21 окт 2012, 00:17
- Репутация: 15
- Ваше звание: developer
Re: Отображение полигона "с учетом кривизны Земли"
Насколько я понимаю последовательность такова.
1) Создать полилинию из двух точек.
2) С помощью densify увеличить количество точек, например, до 200.
3) Нарисовать на карте.
Но мне не понятно, будет ли подобная полилиния кривой? Т.е. мне не понятно как взаимосвязана СК WGS 1984(в этой системе координат или проекции изображена вся Земля целиком) и линия соединяющая две точки на карте. Если бы система координат(для всей карты целиком) была бы прямоугольной(например, это была бы одна зона из UTM или СК-42) то линия соединяющая две точки - всегда прямая(сколько бы промежуточных точек мы бы не задали)
А в СК WGS 1984 это прямая станет кривой(если задать 200 промежуточных точек)?
1) Создать полилинию из двух точек.
2) С помощью densify увеличить количество точек, например, до 200.
3) Нарисовать на карте.
Но мне не понятно, будет ли подобная полилиния кривой? Т.е. мне не понятно как взаимосвязана СК WGS 1984(в этой системе координат или проекции изображена вся Земля целиком) и линия соединяющая две точки на карте. Если бы система координат(для всей карты целиком) была бы прямоугольной(например, это была бы одна зона из UTM или СК-42) то линия соединяющая две точки - всегда прямая(сколько бы промежуточных точек мы бы не задали)
А в СК WGS 1984 это прямая станет кривой(если задать 200 промежуточных точек)?
-
- Гуру
- Сообщения: 527
- Зарегистрирован: 21 окт 2012, 00:17
- Репутация: 15
- Ваше звание: developer
Re: Отображение полигона "с учетом кривизны Земли"
И вот еще проблема: как мне указать с какой стороны угла рисовать линию?
Насколько я понимаю две точки в системе WGS 84 можно соединить прямой двумя способами.
Подскажите, пожалуйста, как задать угол(вогнутость) у прямой, соединяющей две точки?
Насколько я понимаю две точки в системе WGS 84 можно соединить прямой двумя способами.
Подскажите, пожалуйста, как задать угол(вогнутость) у прямой, соединяющей две точки?
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость