GIS-LAB

Географические информационные системы и дистанционное зондирование


Форумы GIS-Lab.info

Геоинформационные системы (ГИС) и Дистанционное зондирование Земли


Построение квадратных полигонов вокруг точки

MapInfo, MapBasic

Построение квадратных полигонов вокруг точки

Сообщение Анастасия19 » 20 апр 2017, 14:15

Здравствуйте, подскажите пожалуйста как можно построить идеальные квадраты (с заданной стороной) вокруг точки или последовательности точек. Пробовала через буферные зоны, но получается четырехугольники кривоватые (стороны не равны). И если можно ориентировать их вдоль линии... :D То есть, есть съемка ЛЭП, линия с точками (опорами) нужно вокруг каждой точечки построить квадратик, ищу варианты как упростить все это...Спасибо!
  • 0

Анастасия19
Новоприбывший
 
Зарегистрирован: 20 апр 2017
 
Сообщения: 6
Репутация: 0

Re: Построение квадратных полигонов вокруг точки

Сообщение trir » 20 апр 2017, 14:17

обычно для этого делают стиль точек
  • 0

trir
просто мимо прохожу
 
Зарегистрирован: 09 апр 2010
Откуда: Ё-бург (на карте)
 
Сообщения: 2643
Репутация: 398
Статьи: 1

Re: Построение квадратных полигонов вокруг точки

Сообщение Анастасия19 » 20 апр 2017, 14:24

trir писал(а):обычно для этого делают стиль точек

Не поняла вас, меня интересуют именно площадные объекты...
  • 0

Анастасия19
Новоприбывший
 
Зарегистрирован: 20 апр 2017
 
Сообщения: 6
Репутация: 0

Re: Построение квадратных полигонов вокруг точки

Сообщение trir » 20 апр 2017, 14:39

но получается четырехугольники кривоватые (стороны не равны)

интересно почему, какая СК слоя?
  • 0

trir
просто мимо прохожу
 
Зарегистрирован: 09 апр 2010
Откуда: Ё-бург (на карте)
 
Сообщения: 2643
Репутация: 398
Статьи: 1

Re: Построение квадратных полигонов вокруг точки

Сообщение Анастасия19 » 20 апр 2017, 14:41

trir писал(а):
но получается четырехугольники кривоватые (стороны не равны)

интересно почему, какая СК слоя?

МСК 66
  • 0

Анастасия19
Новоприбывший
 
Зарегистрирован: 20 апр 2017
 
Сообщения: 6
Репутация: 0

Re: Построение квадратных полигонов вокруг точки

Сообщение gamm » 20 апр 2017, 19:25

проще всего затащить вектор в R/Python, и там спокойно все руками нарисовать, и записать в текстовый MIF/MID.
  • 0

gamm
программист
 
Зарегистрирован: 15 окт 2010
Откуда: Казань (на карте)
 
Сообщения: 2466
Репутация: 488

Re: Построение квадратных полигонов вокруг точки

Сообщение Анастасия19 » 21 апр 2017, 08:11

gamm писал(а):проще всего затащить вектор в R/Python, и там спокойно все руками нарисовать, и записать в текстовый MIF/MID.

А что такое R/Python :| ?
  • 0

Анастасия19
Новоприбывший
 
Зарегистрирован: 20 апр 2017
 
Сообщения: 6
Репутация: 0

Re: Построение квадратных полигонов вокруг точки

Сообщение trir » 21 апр 2017, 08:18

R/Python, а есть ещё SQL и даже страшно сказать - MapBasic
  • 0

trir
просто мимо прохожу
 
Зарегистрирован: 09 апр 2010
Откуда: Ё-бург (на карте)
 
Сообщения: 2643
Репутация: 398
Статьи: 1

Re: Построение квадратных полигонов вокруг точки

Сообщение Александр Мурый » 21 апр 2017, 10:44

trir писал(а):R/Python, а есть ещё SQL и даже страшно сказать - MapBasic

После таких сенсационных заявлений нам всем ничего другого не остаётся, как ждать от вас готовых решений хотя бы на одном из означенных выше продуктов.
  • 0

Редактор материалов, модератор форума
Александр Мурый
званий не имею
 
Зарегистрирован: 26 сен 2009
Откуда: Москва (на карте)
 
Сообщения: 4854
Репутация: 661
Статьи: 3
Проекты: 5/1

Re: Построение квадратных полигонов вокруг точки

Сообщение trir » 21 апр 2017, 12:20

означенных выше продуктов

это ЯП

Код: Выделить всё
CREATE FUNCTION [dbo].[Trans1]
(
   @wpoint geometry,
   @xy0point geometry,
   @sina float,
   @cosa float
)
RETURNS geometry
AS
BEGIN
   declare @nx float;
   declare @ny float;
   set @nx = (@wpoint.STX - @xy0point.STX)*@cosa + (@wpoint.STY - @xy0point.STY)* @sina;
   set @ny = -(@wpoint.STX - @xy0point.STX)*@sina + (@wpoint.STY - @xy0point.STY)* @cosa;
   RETURN geometry::STGeomFromText('POINT(' + Str(@nx, 25, 5) + ' ' + Str(@ny, 25, 5) + ')', 0);
END


Код: Выделить всё
CREATE FUNCTION [dbo].[GetRect]
(
   @p1 geometry,
   @p2 geometry,
   @size float
)
RETURNS geometry
AS
BEGIN
   declare @r float;
   set @r = @p1.STDistance(@p2);
   declare @sina float;
   declare @cosa float;
   set @sina = (@p2.STY - @p1.STY)/@r;
   set @cosa = (@p2.STX - @p1.STX)/@r;
   DECLARE @pr1 geometry;
   DECLARE @pr2 geometry;
   DECLARE @pr3 geometry;
   DECLARE @pr4 geometry;
   SET @pr1 = [dbo].[Trans1](geometry::Point(@size, @size, 0), @p1, @sina, @cosa);
   SET @pr2 = [dbo].[Trans1](geometry::Point(@size, -1*@size, 0), @p1, @sina, @cosa);
   SET @pr3 = [dbo].[Trans1](geometry::Point(-1*@size, -1*@size, 0), @p1, @sina, @cosa);
   SET @pr4 = [dbo].[Trans1](geometry::Point(-1*@size, @size, 0), @p1, @sina, @cosa);
   DECLARE @pstr nvarchar(MAX);
   set @pstr = '0x01030000000100000005000000';
   set @pstr = @pstr + REPLACE(CONVERT(varchar(max), @pr1.STAsBinary(), 2), '0101000000', '')
   set @pstr = @pstr + REPLACE(CONVERT(varchar(max), @pr2.STAsBinary(), 2), '0101000000', '')
   set @pstr = @pstr + REPLACE(CONVERT(varchar(max), @pr3.STAsBinary(), 2), '0101000000', '')
   set @pstr = @pstr + REPLACE(CONVERT(varchar(max), @pr4.STAsBinary(), 2), '0101000000', '')
   set @pstr = @pstr + REPLACE(CONVERT(varchar(max), @pr1.STAsBinary(), 2), '0101000000', '')
   DECLARE @tb varbinary(MAX);
   set @tb = CONVERT(varbinary(MAX), @pstr, 1)
   RETURN geometry::STGeomFromWKB(@tb , 0);
END


Код: Выделить всё
DECLARE @p1 geometry;
DECLARE @p2 geometry;
declare @size float;
set @size =11.1;
SET @p1 = geometry::STGeomFromText('POINT(1 1)', 0);
SET @p2 = geometry::STGeomFromText('POINT(10 15)', 0);
DECLARE @g geometry;   
SET @g = [dbo].[GetRect](@p1, @p2, @size); 
SELECT @g.STAsText(); 
  • 1

trir
просто мимо прохожу
 
Зарегистрирован: 09 апр 2010
Откуда: Ё-бург (на карте)
 
Сообщения: 2643
Репутация: 398
Статьи: 1

Re: Построение квадратных полигонов вокруг точки

Сообщение Александр Мурый » 21 апр 2017, 12:47

trir писал(а):
означенных выше продуктов

это ЯП

Спасибо, а то мужики-то и не знали.

Следующий вопрос: как топикстартеру применить ваш код на практике? Как я понял, в наличии набор TAB-файлов с точками.
  • 0

Редактор материалов, модератор форума
Александр Мурый
званий не имею
 
Зарегистрирован: 26 сен 2009
Откуда: Москва (на карте)
 
Сообщения: 4854
Репутация: 661
Статьи: 3
Проекты: 5/1

Re: Построение квадратных полигонов вокруг точки

Сообщение trir » 21 апр 2017, 12:52

  • 0

trir
просто мимо прохожу
 
Зарегистрирован: 09 апр 2010
Откуда: Ё-бург (на карте)
 
Сообщения: 2643
Репутация: 398
Статьи: 1

Re: Построение квадратных полигонов вокруг точки

Сообщение Анастасия19 » 21 апр 2017, 13:40

Благодарю всех кто откликнулся, посоветовали сделать в автокаде, буду разбираться....
П.С. в R/Python, SQL, MapBasic не сильна, намсте)
  • 0

Анастасия19
Новоприбывший
 
Зарегистрирован: 20 апр 2017
 
Сообщения: 6
Репутация: 0

Re: Построение квадратных полигонов вокруг точки

Сообщение trir » 21 апр 2017, 13:49

посоветовали сделать в автокаде

на lisp'е?
  • 0

trir
просто мимо прохожу
 
Зарегистрирован: 09 апр 2010
Откуда: Ё-бург (на карте)
 
Сообщения: 2643
Репутация: 398
Статьи: 1

Re: Построение квадратных полигонов вокруг точки

Сообщение thegeo » 21 апр 2017, 15:49

Попробуйте. Хотя и написано достаточно давно, но кажется вполне работоспособно.
Направление задается движением мыши при нажатой ЛК.
  • 3

Вложения
SmallThings.rar
(5.15 КБ) Скачиваний: 13
thegeo
Активный участник
 
Зарегистрирован: 17 янв 2012
 
Сообщения: 148
Репутация: 69

След.

Вернуться в MapInfo

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


(Геокруг)

© GIS-Lab и авторы, 2002-2013. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов (подробнее).