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

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

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

Сообщение Анастасия19 »

Здравствуйте, подскажите пожалуйста как можно построить идеальные квадраты (с заданной стороной) вокруг точки или последовательности точек. Пробовала через буферные зоны, но получается четырехугольники кривоватые (стороны не равны). И если можно ориентировать их вдоль линии... :D То есть, есть съемка ЛЭП, линия с точками (опорами) нужно вокруг каждой точечки построить квадратик, ищу варианты как упростить все это...Спасибо!
trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

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

Сообщение trir »

обычно для этого делают стиль точек
Анастасия19
Новоприбывший
Сообщения: 12
Зарегистрирован: 20 апр 2017, 13:00
Репутация: 0

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

Сообщение Анастасия19 »

trir писал(а):обычно для этого делают стиль точек
Не поняла вас, меня интересуют именно площадные объекты...
trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

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

Сообщение trir »

но получается четырехугольники кривоватые (стороны не равны)
интересно почему, какая СК слоя?
Анастасия19
Новоприбывший
Сообщения: 12
Зарегистрирован: 20 апр 2017, 13:00
Репутация: 0

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

Сообщение Анастасия19 »

trir писал(а):
но получается четырехугольники кривоватые (стороны не равны)
интересно почему, какая СК слоя?
МСК 66
gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

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

Сообщение gamm »

проще всего затащить вектор в R/Python, и там спокойно все руками нарисовать, и записать в текстовый MIF/MID.
Анастасия19
Новоприбывший
Сообщения: 12
Зарегистрирован: 20 апр 2017, 13:00
Репутация: 0

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

Сообщение Анастасия19 »

gamm писал(а):проще всего затащить вектор в R/Python, и там спокойно все руками нарисовать, и записать в текстовый MIF/MID.
А что такое R/Python :| ?
trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

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

Сообщение trir »

R/Python, а есть ещё SQL и даже страшно сказать - MapBasic
Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

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

Сообщение Александр Мурый »

trir писал(а):R/Python, а есть ещё SQL и даже страшно сказать - MapBasic
После таких сенсационных заявлений нам всем ничего другого не остаётся, как ждать от вас готовых решений хотя бы на одном из означенных выше продуктов.
Редактор материалов, модератор форума
trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

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

Сообщение trir »

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

Код: Выделить всё

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();  
Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

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

Сообщение Александр Мурый »

trir писал(а):
означенных выше продуктов
это ЯП
Спасибо, а то мужики-то и не знали.

Следующий вопрос: как топикстартеру применить ваш код на практике? Как я понял, в наличии набор TAB-файлов с точками.
Редактор материалов, модератор форума
trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

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

Сообщение trir »

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

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

Сообщение Анастасия19 »

Благодарю всех кто откликнулся, посоветовали сделать в автокаде, буду разбираться....
П.С. в R/Python, SQL, MapBasic не сильна, намсте)
trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

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

Сообщение trir »

посоветовали сделать в автокаде
на lisp'е?
thegeo
Активный участник
Сообщения: 161
Зарегистрирован: 17 янв 2012, 18:51
Репутация: 74

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

Сообщение thegeo »

Попробуйте. Хотя и написано достаточно давно, но кажется вполне работоспособно.
Направление задается движением мыши при нажатой ЛК.
Вложения
SmallThings.rar
(5.15 КБ) 430 скачиваний
Ответить

Вернуться в «MapInfo»

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

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