На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Денис Подчерняев (Все сообщения пользователя)

Поиск  Пользователи  Правила  Войти
Форум » Пользователи » Денис Подчерняев
Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 ... 4 5 6 7 8 9 10 11 12 13 14 След.
Изменение проекции карты и ее перерисовка, Не корректно изменяется проекция карты мира
 
эмм.. ясно. Т.е. тег name в xml ни на что не влияет кроме, как на то, что будет возвращать функция - mapGetProjectionNameByCod?
А на структуру mapreg влияет параметр EPGS?

Спасибо.

По поводу LISTREG
Делаю так:
[CODE]strcpy(mapreg.Name, "world");
strcpy(listreg.ListName, "world");
strcpy(listreg.Nomenclature, "mapFile");
wrapper->mapSetFileNameFromNomenclature(listreg.FileName,
sizeof(listreg.FileName), listreg.Nomenclature);
wrapper->mapCalcTopographicSheet(0, (MAPREGISTER*)&mapreg, &listreg);[/CODE]
Изменено: Денис Подчерняев - 07.06.2012 19:09:31
Изменение проекции карты и ее перерисовка, Не корректно изменяется проекция карты мира
 
На сколько я понял название проекции обязательно надо писать, как оно прописано в документации (точнее в хедерах). В таком случае ядро само дописывает необходимые параметры в mapreg. Или нет? Вот что касается параметра (Comment="LatitudeLongitude") в xml. Его можно какнть достать средствами панорамы?

Нет, не в функии. Карта уже создана. Все функции прошли без ошибок. Открываю я ее при помощи карта 2011.
Изменено: Денис Подчерняев - 07.06.2012 18:17:23
Изменение проекции карты и ее перерисовка, Не корректно изменяется проекция карты мира
 
Столкнулся с такой проблемой.
При создании новой карты с новой проекцией фф-я: mapCreateMapEx.
После того, как карта создана и перенесены туда все элементы возникает ошибка:

"Access violation at addree 02216763 in module 'MAPACCESS.DLL'. Read of address 30303034"

Привожу код:
xml откуда читаю первую проекцию:
[CODE]
<?xml version="1.0" encoding="UTF-8"?>
<ProjectList Version="1.0">

<Project Name="Postel Equidistant Azimuthal" Comment="Postel Equidistant Azimuthal" EPSG="2039">
<Projection Type="Postel Equidistant Azimuthal"
CentralMeridian="38"
LatitudeOfOrigin="55"
StandardParallel1="70"
EllipsoideKind="9"
ScaleFactor="1.0000000"
DataProjection="1"/>
</Project>

<Project Name="LatitudeLongitude" Comment="LatitudeLongitude" EPSG="2039">
<Projection Type="LatitudeLongitude"
ScaleFactor="1.0000000"/>  
</Project>  
....
</ProjectList>
[/CODE]

Как считываю:
[CODE]
...
DATUMPARAM datum;
ELLIPSOIDPARAM ellparm;
MAPREGISTEREX mapreg;
Projection pr;
char name[256];
wrapper->mapMapRegisterListParameters(mapReg, i, &mapreg, &datum,
&ellparm);
pr.mapreg = mapreg;
pr.ellparm = ellparm;
pr.datum = datum;
pr.number = mapreg.MaterialProjection;
...
[/CODE]


Как создаю: в mapreg находятся все параметры первой проекции из xml + автоматически заполняются остальные поля
[CODE]
PanoramaProjection::createNewMap(QString newPathMap, QString classifier, MAPREGISTEREX mapreg)
{
...
mapreg.Scale = map->getScale();
mapreg.FlagRealPlace = -1;

strcpy(mapreg.Name, "world");
strcpy(listreg. ListName, "world");
strcpy(listreg.Nomenclature, "mapFile");
wrapper->mapSetFileNameFromNomenclature(listreg.FileName, sizeof(listreg.FileName),listreg.Nomenclature);
wrapper->mapCalcTopographicSheet(0, (MAPREGISTER*)&mapreg, &listreg);

hmap = wrapper->mapCreateMapEx(cArrayMap,cArrayClassifier, &mapreg, &listreg);
...
[/CODE]

В чем тут может быть проблема?

И еще. Не нашел функцию вывода названия проекции на Руссом языке. Она присутствует? Или как это можно сделать при помощи xml файла конфигурации (если можно).
Нанесение объектов обстановки на карту, Объект обстановки выходит за карту
 
[QUOTE]Oleg Belenkov пишет:
На случай, если мой совет остался незамеченным, повторюсь:



Надежнее иметь рабочий объект с контуром, по которому нужно резать (например, круглую рамку). И использовать функции из crossapi.h для нарезания по нужному контуру.



Если карта с рамкой, то нарезка выполняется автоматически при вызове функции mapCommitWithPlace или mapCommitWithPlaceForList.[/QUOTE]

Так ведь в разных проекциях будут разные контуры. Не обязательно круглая и прямоугольная. Допустим будет "Kavrajsky Cylindrical Equal Area", тут придется резать по эллипсу.
Этакую функцию я не нашел...

Нам же известны только точки контура "зоны".
Нанесение объектов обстановки на карту, Объект обстановки выходит за карту
 
Спасибо за помощь. Сейчас попробую что-то "исполнить")) О результатах отпишусь.
Нанесение объектов обстановки на карту, Объект обстановки выходит за карту
 
нет нет нет.. я про другую проекцию. Допустим Азимутальную. Там же земля отображается "вид сверху". Если там нарисовать объект выходящий за 180, то он обрежется "как прямоугольник", а требуется, что бы обрезался по контуру КРОГЛОЙ карты.
Надеюсь, понятно объяснил, что хочу получить в итоге?  :)
Нанесение объектов обстановки на карту, Объект обстановки выходит за карту
 
[QUOTE]KFF пишет:
[QUOTE]А если не будет?[/QUOTE]

а так же в случаях когда объекты наносятся на SIT в ограниченную область я применяю старый "хакерский" метод - заглушка для функции.

Функция ядра mapAppendPointGeo глушится внутри моего проекта вот таким аналогом:

[CODE]function mapAppendPointGeo(Map:HMap; X, Y : double):integer;

begin

if Y>pi then Y:=pi else

if Y<-pi then Y:=-pi;

// так же можно "ограничить" по широте, например 60-й, если я работаю с Гауссом-Крюгером

mapproc.mapAppendPointGeo(Map, X, Y);

end;[/CODE] :)[/QUOTE]

Спасибо за советы. С цилиндрической проекцией более-менее разобрался...

Хм.. интересно. А Допустим, если карта имеет Азимутальную проекцию. Ведь в вышеуказанном способе просто свяжутся первая и последняя точка прямой, что для этой проекции не приемлимо. Как быть в этом случае?
Изменение проекции карты и ее перерисовка, Не корректно изменяется проекция карты мира
 
Так. Это понятно. Спасибо.
Новый вопрос.
Когда я ставлю проекцию: "Азимутальная прямая равнопромежуточная". По идеи я ожидаю увидеть карту "с верху". Однако меняются только координаты, а само отображение карты нет.
В ГИС карта 2011 есть специальная утилитка, которая трансформирует все объекты.

Как можно сделать трансформацию всех объектов относительно проекции по средством mapapi функций?
Изменено: Денис Подчерняев - 04.06.2012 19:16:23
Нанесение объектов обстановки на карту, Объект обстановки выходит за карту
 
[QUOTE]Какими средствами? Телепаты в отпуске![/QUOTE]
А, сорри. Значит так:
Создаю слой:
[CODE]
if (isHMAPavailable() == true)
{
long int err = 0;
qDebug() << hMap;
wrapper->mapGetPictureSize(hMap, &(this->width), &(this->height));
HSITE hSite;
hSite = createSite();
if (hSite != 0)
{
  hSites.insert(1, hSite);
[/CODE]

Теперь засовываю туда объект:
[CODE]
void NativeMap::drawPolygon(QList <QList <LATLON>* >* ringList,
int rgb, int obstId)
{
 HSITE hSite = getSiteForObst();
...
...
 // создаем объект пользовательской карты
 HOBJ hObj = wrapper->mapCreateSiteObject(hMap, hSite);
 long int objNum = wrapper->mapRegisterDrawObject(hObj, numLayer, LOCAL_SQUARE);
 int elemCount = wrapper->mapAppendDraw(hObj, IMG_POLYGONGLASS, (const char*) &polygon);
 // рисуем точки
 for (int i = 0; i < n; i++)
 {
   ...
   wrapper->mapAppendPointPlane(hObj, x, y);
   ...
 }
 ...
 // если есть внутр кольца (0-ое - это внешнее кольцо)
 for (int k = 1; k < ringCount; k++)
 {
    wrapper->mapCreateSubject(hObj);
    for (int i = 0; i < n; i++)
    {
     ...
     wrapper->mapAppendPointPlane(hObj, x, y, k);
     }
  }
  ...
  objNum = wrapper->mapCommitWithPlace(hObj);
   ...
  wrapper->mapFreeObject(hObj);
}
[/CODE]
Нанесение объектов обстановки на карту, Объект обстановки выходит за карту
 
[QUOTE]Газонокосильщик пишет:
И при чём тут ГТК?[/QUOTE]
А куда?
Страницы: Пред. 1 ... 4 5 6 7 8 9 10 11 12 13 14 След.



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности