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

KFF (Все сообщения пользователя)

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

Страницы: Пред. 1 ... 317 318 319 320 321 322 323 324 325 326 327
Нелегальная копия 3-D компонента
 
Долго вникала в суть данного раздела и решила внести свою лепту!
Возникает парочка вопрос к господину Grant-у.
- библиотека gss3d.dll присутсвует только в директории ..\:Windows\System32, или есть такая же библиотека в текущей директории с EXE файлом ?
- в директории ..\:Windows\System32 присутсвует только gss3d.dll, или кроме нее еще и gis3d.dll
- сколько у Вас установленных копий Gis Tool (возможно разных версий)?
- какие пути прописаны в Tools>Evironmet Optoins для среды и какие для проекта project>Optoins

PS: 1)при переходе с версии 9 на версию 10 у меня возникала похожая проблема из=за несоответсвия драйверов ключей версии 3.х и 4.х. Вроде все нормально, старая gis цепляется за новый ключ -> результат его не видно. И выдает похожие сообщения.
Изменено: XENA - 07.01.2009 11:30:28
Функция mapPlaneToGeo() для проекции Меркатора
 
Полностью с Вами согласна!
Проблема присутсвует для западной части карты от осевого мередиана !
Пересчет координат
 
Здравствуйте Антонина !
Я точно не знаю на каком языке Вы "общаетесь" с компьютером ответчу 2-мя версиями:
1. Язык Pascal:
----------------------------------------
uses ...,...,..., mapproc, maptype; < подключаем 2 модуля
 .......
procedure XXXXXXX;
var Point : TDoublePoint;
    FMap  : HMap;
begin
 FMap:=mapOpenMap(PChar(ПОЛНЫЙ ПУТЬ К КАРТЕ+ИМЯ ФАЙЛА MAP или SIT), GENERIC_READ);
 Point.X:=pi*ШИРОТА В ГРАДУСАХ/180;
 Point.Y:=pi*ДОЛГОТА В ГРАДУСАХ/180;
 mapGeoToPlane(FMap, Point.X, Point.Y);
 // теперь переменная Point содержит координаты указанной Выше точки в метрах на местности
 ..... < оперируем с координатами
 // ЗАКРЫВАЕМ КАРТУ
 mapCloseMap(FMap);
end;

2. Язык Си:
----------------------------------------  
#include "mapproc.h"
#include "maptype.h"

 .......
void  XXXXXXX
{
 DoublePoint Point;
 HMAP FMAP;

 FMap = mapOpenMap((ПОЛНЫЙ ПУТЬ К КАРТЕ+ИМЯ ФАЙЛА MAP или SIT), 0x80000000);
 Point->X = 3.1415926 * ШИРОТА В ГРАДУСАХ / 180;
 Point->Y = 3.1415926 * ДОЛГОТА В ГРАДУСАХ / 180;
 mapGeoToPlane(FMap, Point->X, Point->Y);
 // теперь переменная Point содержит координаты указанной Выше точки в метрах на местности
 ..... < оперируем с координатами
 // ЗАКРЫВАЕМ КАРТУ

 mapCloseMap(FMap);
}
цвет условного знака
 
По поводу общего алгоритма - вопрос к модераторам ФОРУМА.

Цвета в данном класификаторе меняються не из-за семантики а из-за того что каждый объект был создан редактором объектов классификатора, и одним из элементов объекта - субобъект с конкретной раскраской. При смене палитры идет замена цветов не по коду классификатора (потому-что Вы писали что семантика "обязательная", не влияющая на вид), а коду цвета этого конкретного субобъекта.
Кстати при смене палитры классификатора (даже при смене типа палитры 16 цветов-256, RGB - CMYK ) меняеется расцветка ВСЕХ без исключения объектов. Как см.1-е предложение ответа.
Параллельные потоки
 
В добавок !
Все таки стало интересно и решила проверить господина Козлова.
Как говороит один мой знакомый молотком можно не только забить гвоздь но и ....
(не буду продолжать)
-----------------------
"НЕРЕШАЕМАЯ ЗАДАЧА"  - многопотоковый модуль работающий с библиотекой "mapacces.dll" (из состава ГИС Панорама)
который должен отображать участок карты на разные КЕНВЕС-ы
----------------
РЕЗУЛЬТАТ НИЖЕ(код - правда на Паскале, Си недолюбливаю):
если интересует рабочий модуль (скинь свои координаты мне на мыло uuof@mail.ru)
перекину КОД и ЕХЕ
PS: (программа запускается любое количество раз, в ней по 3-потока.ВРОДЕ ПРОБЛЕМ НЕТ, и exception-ов тоже)
КОД:

____________________________________________________________­_____
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls;

type
 // КЛАСС: стандартный поток Винды (Мой потомок)
 //
 TMyThread = class(TThread)
  protected
    IsDraw : boolean;
  public
    FDC     : Cardinal;
    ViewMap : boolean;
    FMap    : integer;
    sName   : string;
    procedure Execute; override;
 end;

 // КЛАСС: стандартная форма
 TForm1 = class(TForm)
   Panel1: TPanel;
   Button1: TButton; // кнопка "Создать 3 потока"
   Button2: TButton; // кнопка "Активировать прорисовку в потоках"
   p1: TPanel; // будем использовать панель 1 как Кенвес для потока 1
   p3: TPanel; // будем использовать панель 2 как Кенвес для потока 2
   p2: TPanel; // будем использовать панель 3 как Кенвес для потока 3
   procedure Button1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure Button2Click(Sender: TObject);
 private
   Threads : array[0..2]of TMyThread;
 public
   FMap : integer;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

 // ОПИСЫВАЕМ САМЫЕ НЕОБХОДИМЫЕ ФУНКЦИИ mapacces.dll ДЛЯ ПРИМЕРА

 function mapOpenMap(Map: Pchar; mode: integer): integer; stdcall;
  external 'mapacces.dll' name 'mapOpenMap';

 procedure mapCloseMap(Map: integer); stdcall;
  external 'mapacces.dll' name 'mapCloseMap';

 // ... И ФУНКЦИЯ - "ПАРАЗИТ", КОТОРАЯ НЕ РИСУЕТ В НЕСКОЛЬКИХ ПОТОКАХ
 procedure mapPaint95(Map: integer; DC : HDC;Erase:integer;var R : TRect); stdcall;
  external 'mapacces.dll' name 'mapPaint95';


{ TMyThread }
// Запуск потока
procedure TMyThread.Execute;
var R : TRect;
begin
 inherited FreeOnTerminate := TRUE;
 FillChar(R,SizeOf(TRect),0);
 R.Top    :=100;
 R.Left   :=100;
 R.Right  :=300;
 R.Bottom :=300;
 try

  while (not Terminated) do
  try
    // если еще не нарисовано И активировано -"НАРИСОВАТЬ"  то:
    if not IsDraw and ViewMap then
    begin
     // Рисуем по законам описанными в mapapi.h
     SetViewportOrgEx(FDC,0,0,nil);
     mapPaint95(FMap,FDC,1,R);
     // устанавливаем флажек НАРИСОВАНО
     IsDraw:=true;
    end;

  except
   Terminate;
  end;

 finally
   Terminate;
 end;
end;


// КЛИК -  зоздаються 3 потока
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin

for i:=0 to 2 do
begin
 Threads[i]:=TMyThread.Create(true);
 Threads[i].sName := 'THREAD:'+IntToStr(i+1);
 Threads[i].FMap := FMap;
 Threads[i].ViewMap := false;
 Threads[i].IsDraw := false;
end;

Threads[0].FDC:=GetDC(P1.Handle);
Threads[1].FDC:=GetDC(P2.Handle);
Threads[2].FDC:=GetDC(P3.Handle);

for i:=0 to 2 do
Threads[i].Resume;

Button1.Enabled:=false;
end;

// активация приложения (создание Формы)
procedure TForm1.FormCreate(Sender: TObject);
begin
// открываем карту
FMap:=mapOpenMap('C:\Panorama10\Data\Podolsk\PODOLSK.MAP', GENERIC_READ);
end;

// деактивация (разрушение) формы
procedure TForm1.FormDestroy(Sender: TObject);
var i : integer;
begin
for i:=0 to 2 do
begin
 if Assigned(Threads[i]) then
 Threads[i].terminate;

end;
ReleaseDC(P1.Handle,Threads[0].FDC); // каждому потоку вешается свой индивидуальный Кенвес
ReleaseDC(P2.Handle,Threads[1].FDC); // каждому потоку вешается свой индивидуальный Кенвес
ReleaseDC(P3.Handle,Threads[2].FDC); // каждому потоку вешается свой индивидуальный Кенвес
mapCloseMap(FMap);
end;

// клик другой кнопкой - выставляем флажки нарисавть карту на прикрепленный к потоку Кенвес
//
procedure TForm1.Button2Click(Sender: TObject);
var i : integer;
begin
  for i:=0 to 2 do
  begin
   Threads[i].ViewMap:=true;
   Sleep(1000); // обязательно должно успеть отработать !
  end;
end;

end.
_______________________________

В директории с ЕХЕ-шником должны находиться:
mapacces.dll и CW3230.DLL
Изменено: KFF - 18.11.2015 15:21:35
Параллельные потоки
 
ОТВЕТ АНДРЕЮ КОЗЛОВУ!
НЕПРАВДА!
Показываю НАГЛЯДНО работу библиотеки mapacces.dll
в трех потоках (различных программах) одновременно
1. ГИС Панорама
2. Задача PanTask
3. Задача MapTask
http://img229.imageshack.us/img229/1689/33438260zj2.th.jpg
цвет условного знака
 
Здравствуйте коллега!
Ответы;
Вопрос 1 (связь) - в данном классификаторе НИКАК
Вопрос 2 (выбор цвета) - ВЫБИРАЕТСЯ ЦВЕТ С КОДОМ "0" если таков отсутсвует с наименьшим кодом
Вопрос 3 НИЧЕГО (если этим цветам не соответсвует Цветной объект у которого семантика влияет на ВИД)

С Уважением XENA!
Функция mapPlaneToGeo() для проекции Меркатора
 
Доброго времени суток господин Bolotoff !
Судя по всему наши модераторы еще не прочитали Ваш вопрос, и я приняла инициативу на себя.
Отсылаю Ван на ящик карту с Вашими параметрами и код (на Паскале) с функцией которая Вас беспокоит.
Я не знаю что у Вас с библиотеками GisTool, но мой Вам совет - обновите.
В центре карты с параметрами которые Вы указали выше
для точки  X=(4373129.8+3719858.8)/2       Y=0  
получается B=50.094318, L=87.00000 см.код.
Космолнавигационные карты
 
Но это единый тип карты который, по моему мнению, позволяет наносить объекты по всей территории мира одновременно. Цилиндрические проекции почему-то при копировании на них объектов с других карт (через буфер) или при присоединении пользовательской карты (с дальнейшей ее трансформацией) превращает объекты южнее экватора в месиво:
Отсылаю на тот-же ящик пример месива (001.zip) + исходную карту (002.zip)+ сит который нужно на нее посадить(003.zip).

Космонавигационная карта (обзорная мировая) которая Вами создана этот сит в месиво не превращает
Изменено: XENA - 28.12.2008 19:36:52
Космолнавигационные карты
 
Доброго времени дня!
Почему во всех версих ГИС Панорама от 7.0 до 10.2 отсутсвтует возможность создания Космонавигацинных карт. И каким образом их создавать ?
Страницы: Пред. 1 ... 317 318 319 320 321 322 323 324 325 326 327



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

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