|
как из структуры полигон вытащить координаты точек в виде таблицы? |
☑ |
0
Ivan_495
22.04.16
✎
14:57
|
Подскажите как проще из струrтуры полигон вытащить координаты точек в виде таблицы?
"POLYGON ((20.5102309726728 54.7257118843514, 20.5102649674551 54.7257099207726, 20.5102612453575 54.7256894025381, 20.5102272692606 54.7256914689476, 20.5102309726728 54.7257118843514))"
нужно
x y
20.5102309726728 54.7257118843514
20.5102649674551 54.7257099207726
|
|
1
Timon1405
22.04.16
✎
15:04
|
ВходСтрока = "POLYGON ((20.5102309726728 54.7257118843514, 20.5102649674551 54.7257099207726, 20.5102612453575 54.7256894025381, 20.5102272692606 54.7256914689476, 20.5102309726728 54.7257118843514))";
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.IgnoreCase = Истина; //Игнорировать регистр
RegExp.Global = Истина; //Поиск всех вхождений шаблона
RegExp.MultiLine = Ложь; //Многострочный режим
Паттерн = "(\d{1,2}\.\d+)\s+(\d{1,2}\.\d+)";
RegExp.Pattern = Паттерн;
МассивСовпадений =RegExp.Execute(ВходСтрока);
Для Каждого ЭлементМассива из МассивСовпадений Цикл
Икс = ЭлементМассива.SubMatches(0);
Игрек = ЭлементМассива.SubMatches(1);
Сообщить(""+Икс+" "+Игрек);
КонецЦикла
дальше сам
|
|
2
Ivan_495
22.04.16
✎
15:10
|
(1) благодарю. круто
|
|
3
Локи-13
22.04.16
✎
15:17
|
еще можно
СтрРазделить
вначале по "," потом по " "
|
|
4
RomanYS
22.04.16
✎
15:28
|
Стр = "POLYGON ((20.5102309726728 54.7257118843514, 20.5102649674551 54.7257099207726, 20.5102612453575 54.7256894025381, 20.5102272692606 54.7256914689476, 20.5102309726728 54.7257118843514))";
Стр = СтрЗаменить(Стр, "POLYGON ((", "");
Стр = СтрЗаменить(Стр, "))", "");
Стр = СтрЗаменить(Стр, " ", ",");
Стр = СтрЗаменить(Стр, ",,", " ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| 0 КАК x,
| 0 КАК y
|ГДЕ
| ЛОЖЬ
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ " + Стр;
Результат = Запрос.Выполнить();
ТЗ = Результат.Выгрузить();
ТЗ.ВыбратьСтроку();
|
|
5
mingw
22.04.16
✎
15:46
|
Классика жанра. Самая быстрая.
Стр = "POLYGON ((20.5102309726728 54.7257118843514, 20.5102649674551 54.7257099207726, 20.5102612453575 54.7256894025381, 20.5102272692606 54.7256914689476, 20.5102309726728 54.7257118843514))";
Стр = СтрЗаменить(Стр, "POLYGON ((", "");
Стр = СтрЗаменить(Стр, "))", "");
Стр = СтрЗаменить(Стр, ", ", Символы.ПС);
Для Номер=1 По СтрЧислоСтрок(Стр) Цикл
Подстрока = СтрПолучитьСтроку(Стр, Номер);
Подстрока = СтрЗаменить(Подстрока, " ", Символы.ПС);
Сообщить("Х="+СтрПолучитьСтроку(Подстрока, 1)+", Y="+СтрПолучитьСтроку(Подстрока, 2));
КонецЦикла;
|
|