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

Заполнение семантики объектов (относительные высоты)

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: Пред. 1 2 3 4 След.
RSS
Заполнение семантики объектов (относительные высоты), C#
 
Вечер перестает быть томным :oops:  
 
Цитата
Ксения Смирнова написал:
Я считаю, что вы не компетентны в данном вопросе, так как, не вы писали данный программный код.мне нужен тот человек, который его написал
Ксения, не нужно так отзываться про одного из разработчиков ядра )))
Он , вместе с другими администраторами - писали сами функции, которые вызываются

и разбираются в нём лучше меня, и ещё нескольких таких как я.
(это я у них спрашиваю консультации по программированию)  :)


Цитата
что нельзя перевести int в bool
  while (mapSeekSiteSelectObject(map, map, obj, sel, flag) != 0)
Изменено: KFF - 16.04.2020 19:33:31
Не тот глуп кто не знает, а тот, кто не знает где искать.
 
А код сам правильно перенесён ?
посмотрите , пожалуйста..
И против разработчиков я ничего не имею. Но если человек написал код, то ему более понятен, так как он писал его . А разработчики помогут с функциями  
 
Цитата
Ксения Смирнова написал:
А код сам правильно перенесён ?
написал, проверил, протестировал - работает
Код
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using System.Windows.Forms;


namespace KsuhaSmirnova
{
    public partial class Form1 : Form
    {
        private const string GisLibrary = "mapacces64.dll";     // dll гис-ядра

        [DllImport(GisLibrary, CharSet = CharSet.Ansi)]
        public static extern int mapOpenMap(string name, int mode);

        [DllImport(GisLibrary, CharSet = CharSet.Ansi)]
        public static extern int mapCreateSiteObject(int map, int site);

        [DllImport(GisLibrary, CharSet = CharSet.Ansi)]
        public static extern int mapCreateSiteSelectContext(int map, int site);

        [DllImport(GisLibrary, CharSet = CharSet.Ansi)]
        public static extern void mapSelectObject(int sel, int code, int flag);

        [DllImport(GisLibrary, CharSet = CharSet.Ansi)]
        public static extern int mapRscObjectCode(int map, int code, int local);

        [DllImport(GisLibrary, CharSet = CharSet.Ansi)]
        public static extern int mapSeekSiteSelectObject(int map, int site, int sel,  int obj, int flag);

        [DllImport(GisLibrary, CharSet = CharSet.Ansi)]
        public static extern int mapAppendSemanticDouble(int obj, int code, double value);

        [DllImport(GisLibrary, CharSet = CharSet.Ansi)]
        public static extern void mapCommitObject(int obj);

        [DllImport(GisLibrary, CharSet = CharSet.Ansi)]
        public static extern void mapDeleteSelectContext(int sel);

        [DllImport(GisLibrary, CharSet = CharSet.Ansi)]
        public static extern void mapFreeObject(int obj);

        [DllImport(GisLibrary, CharSet = CharSet.Ansi)]
        public static extern void mapCloseMap(int map);

        public Form1()
        {
            InitializeComponent();   
        }

        public void ForKsuhaSmirnova(int map, double Hotn)
        {
            int obj = mapCreateSiteObject(map, map);         // создать контейнер для объекта
            int sel = mapCreateSiteSelectContext(map, map);  // создать поисковик по карте
            mapSelectObject(sel, -1, 0);                         // "потушить" в поисковике все объекты (по умолчанию активны все объекты карты)
                                                                 // выбрать в поисковике только объекты с кодом 71111110 и площадой локализацией
            mapSelectObject(sel, mapRscObjectCode(map, 71111000, 1), 1);
            int flag = 0;
            while (mapSeekSiteSelectObject(map, map, sel, obj, flag) != 0) // перебираем всё что найдено
            {
                mapAppendSemanticDouble(obj, 1, Hotn); // добавляем семантику относительная высота (код 1) со значением Hotn (поступающим на вход процедуры)     
                mapCommitObject(obj);                // записываем содержимое "контейнера объекта" на карту
                flag = 4;
            }
            mapDeleteSelectContext(sel);            // удаляем поисковик 
            mapFreeObject(obj);                     // удаляем контейнер для объекта
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int map = mapOpenMap("D:\\Sample\\KsuhaSmirnova\\map\\НАЗВАНИЕ_КАРТЫ_ЛЕСОВ.sitx", 0);
            ForKsuhaSmirnova(map, 27.4);
            mapCloseMap(map);
        }
    }
}
Не тот глуп кто не знает, а тот, кто не знает где искать.
 
В чем проблема?
 
Цитата
Ксения Смирнова написал:
В чем проблема?
Скорее всего в платформе в которой Вы собираете и запускаете задачу

Попробуйте повсюду вместо INT поставить LONG INT

СТОП СТОП СТОП!

Что там выше за C_CONTAINER ??
Скорее всего у Вас смешанное использование ядер ГИС

Пришлите мне на ящик uuof@mail.ru или выложите в теме полный проект.
Изменено: KFF - 20.04.2020 18:27:45
Не тот глуп кто не знает, а тот, кто не знает где искать.
 
Цитата
KFF написал:
private const string GisLibrary = "mapacces64.dll";     // dll гис-ядра

Библиотека mapacces64.dll - это библиотека ГИС-ядра ГИС "Панорама" (или ГИС "Оператор").
Использовать ГИС-ядро этих приложений можно только в случае, если выполняется разработка прикладных задач, которые предназначены для работы в составе самих этих приложений.
Прикладные задачи разрабатываются на базе SDK.

Если Вы разрабатываете отдельное ГИС-приложение, то необходимо использовать ГИС-ядро из состава GIS ToolKit (или GIS ToolKit Active) - gis64acces.dll и др. библиотеки gis64*.dll.
При этом можно использовать как отдельно компоненты GIS ToolKit (или GIS ToolKit Active), отдельно вызовы MAPAPI, так и совместно - MAPAPI с компонентами.
Но! Ни в коем случае нельзя смешивать обращения в двум разным ГИС-ядрам!
Обязательно получите Access Violation!


И еще. Библиотеки должны соответствовать разрядности Вашего приложения.
В состав GIS ToolKit 13 (или GIS ToolKit Active) включены два комплекта библиотек - для x32 и для x64 разрядных приложений:
- gis32acces.dll и др. библиотеки gis32*.dll;
- gis64acces.dll и др. библиотеки gis64*.dll,
соответственно.
 
Цитата
Денис Вицко написал:
Ни в коем случае нельзя смешивать обращения в двум разным ГИС-ядрам!
Так я о том же и пишу Денис.
У Ксении не понятно под какое ядро разрабатывается приложение. Вчера, на фото увидел фрагмент кода выше по тексту и обратил внимание на C_CONTAINER
то есть, она явно работает с GTK Active, причём не ясно под какой платформой
Не тот глуп кто не знает, а тот, кто не знает где искать.
 
Цитата
KFF написал:
Цитата
Денис Вицко написал:
Ни в коем случае нельзя смешивать обращения в двум разным ГИС-ядрам!
Так я о том же и пишу Денис.
У Ксении не понятно под какое ядро разрабатывается приложение. Вчера, на фото увидел фрагмент кода выше по тексту и обратил внимание на C_CONTAINER
то есть, она явно работает с GTK Active, причём не ясно под какой платформой
среда программирования Visual Studio 2013; язык программирования С#; GISToolKit Active 2011 (версия 11.0.3). Программирую на 64 разрядной  
 
Цитата
Денис Вицко написал:
В состав GIS ToolKit 13 (или GIS ToolKit Active) включены два комплекта библиотек - для x32 и для x64 разрядных приложений:
Цитата
Ксения Смирнова написал:
GISToolKit Active 2011 (версия 11.0.3). Программирую на 64 разрядной  
Вопрос Денису Вицку и другим разработчиками

Разве 11-я версия ядра поддерживала 64-х разрядные приложения? Помнится что была какая то переходная версия, но полноценное 64-х разрядное ядро это 12-я Панорама.

или я что-то путаю?
Не тот глуп кто не знает, а тот, кто не знает где искать.
Страницы: Пред. 1 2 3 4 След.
Читают тему (гостей: 1)



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

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