Неужели ни у кого нет простого примера консольного приложения (создание слоя и 1 объекта) на C#?
26.08.2019 21:18:19
[CODE] int info = MapAccess.mapCreateObject(hMap, 1, KIND.IDDOUBLE2, 0);
if (info == 0) Console.WriteLine("ОШИБКА mapCreateObject"); if (MapAccess.mapRegisterObject(info, 19, OBJLOCAL.LOCAL_POINT) == 0) Console.WriteLine("ОШИБКА mapRegisterObject"); if (MapAccess.mapAppendPointPlane(info, 4356000, 9750000) == 0) Console.WriteLine("ОШИБКА mapAppendPointPlane"); if (MapAccess.mapCommitWithPlace(info) == 0) Console.WriteLine("ОШИБКА mapCommitWithPlace"); MapAccess.mapFreeObject(info); MapAccess.mapSetRegion(hMap); Console.WriteLine("mapGetListCount="+MapAccess.mapGetListCount(hMap)); Console.WriteLine("mapGetObjectCount=" + MapAccess.mapGetObjectCount(hMap, 1)); Console.WriteLine("mapGetRealObjectCount=" + MapAccess.mapGetRealObjectCount(hMap, 1)); [/CODE] Получаю ответ: [CODE]mapGetListCount=1mapGetObjectCount=2 mapGetRealObjectCount=2 [/CODE] Содержимое лог файла [CODE]---> 21:30:20 OPEN MAP. 26/08/2019 21:30:20 CREATE MAP : test.sitx 21:30:20 ? 1, [/CODE]Как видно пишет, что объекта 2. 1 - это рамка, а 2 как бы и не существует. Открываю в ГИС Операторе - рамку вижу, а объект - нет. В строке состояния написано что 2 объекта. Поиск объекта находит только рамку. ЗЫ Приложение х64.
Изменено: |
|
|
24.08.2019 22:09:18
[CODE]MAPREGISTEREX mapreg = new MAPREGISTEREX();
LISTREGISTER listreg = new LISTREGISTER(); MapAccess.mapRegisterFromMapType(MAPTYPE.CK_42, ref mapreg); mapreg.DeviceCapability = -2; mapreg.Scale = 200000; mapreg.Name = "Район работ"; listreg.ListName = "Лист 001"; double degreetoradian = 3.14159265358979323846 / 180.0; mapreg.AxisMeridian = 27 * degreetoradian; listreg.XSouthWest = 4300000; // X ю-з listreg.YSouthWest = 9700000; // Y ю-з listreg.XNorthWest = 4400000; // X с-з listreg.YNorthWest = 9700000; // Y с-з listreg.XNorthEast = 4400000; // X с-в listreg.YNorthEast = 9800000; // Y с-в listreg.XSouthEast = 4300000; // X ю-в listreg.YSouthEast = 9800000; // Y ю-в hMap = MapAccess.mapCreateMapEx("test.sitx", "bag.rsc", ref mapreg, ref listreg); int info = MapAccess.mapCreateSiteObject(hMap, 1, KIND.IDDOUBLE2, 0); MapAccess.mapRegisterObject(info, 19, OBJLOCAL.LOCAL_POINT); // 19 - точечный знак в классификаторе MapAccess.mapAppendPointPlane(info, 4356000, 9750000); MapAccess.mapCommitWithPlace(info); MapAccess.mapFreeObject(info); [/CODE]слой создает, а объект не наносит. что не так? или надо создать Site и только после этого вносить?
Изменено: |
|
|
23.08.2019 14:11:42
Andrey Gheleznyakov, Спасибо за ответ. Разобрался. Буду рыть дальше.
Изменено: |
|
|
22.08.2019 22:21:07
Прошу помощи
Исходные данные: VS 2019 C#, собственный классификатор, прямоугольные координаты (осевой меридиан), начинающий программист. Задача: программное создание слоя с нанесением на него объектов, с собственным интерфейсом (без отображения карты и т.д.) Прошу громко не ругать, а поделиться простым проектом (создать слой (sitx/sit), создать 1-2 объекта и сохранить этот слой. Если возможно без gisacces.dll) ЗЫ: сделал создание txf, но хотелось бы сразу sitx (sit) без импорта.
Изменено: |
|
|
© КБ Панорама, 1991-2024 Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности |