Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как привязать область к номеру точек через Googlemaps - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Как привязать область к номеру точек через Googlemaps (Формулы/Formulas)
Как привязать область к номеру точек через Googlemaps
ant6729 Дата: Четверг, 19.05.2016, 12:39 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Добрый день, есть адреса города Москва (документ в Excel)

Есть google maps
https://www.google.ru/maps/
Мои карты
Мои места
Карты
Создать карты
Импорт
Нажимаю значок ввиде угла с кружочками (сложно сказал) обвожу точки

Называю выделенную область с точками "область 1", например

Вопрос
Можно ли выкачать теперь графические данные из карты в Excel таким образом, чтобы
названиям этих точек или их атрибутам присваивалось название "область 1"?

Данные выгружаются в KML формате... там название области и номеров точек нет что дальше делать, не понимаю.

http://radikal.ru/Img....60442fe
К сообщению приложен файл: _Microsoft_Exce.xlsx (8.1 Kb)


Сообщение отредактировал ant6729 - Четверг, 19.05.2016, 12:42
 
Ответить
СообщениеДобрый день, есть адреса города Москва (документ в Excel)

Есть google maps
https://www.google.ru/maps/
Мои карты
Мои места
Карты
Создать карты
Импорт
Нажимаю значок ввиде угла с кружочками (сложно сказал) обвожу точки

Называю выделенную область с точками "область 1", например

Вопрос
Можно ли выкачать теперь графические данные из карты в Excel таким образом, чтобы
названиям этих точек или их атрибутам присваивалось название "область 1"?

Данные выгружаются в KML формате... там название области и номеров точек нет что дальше делать, не понимаю.

http://radikal.ru/Img....60442fe

Автор - ant6729
Дата добавления - 19.05.2016 в 12:39
ant6729 Дата: Четверг, 19.05.2016, 14:51 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Или выкачивать в Excel название зоны из google maps как-то
Мне нужно, чтобы данные точки 1,2,3,4 имели в Excel идентификатор "область 1", например.

Или чтобы хотя бы как-то название зоны выкачивалось вместе с названиями точек... может быть, там дальше бы понял, как это лучше соединить там.
 
Ответить
СообщениеИли выкачивать в Excel название зоны из google maps как-то
Мне нужно, чтобы данные точки 1,2,3,4 имели в Excel идентификатор "область 1", например.

Или чтобы хотя бы как-то название зоны выкачивалось вместе с названиями точек... может быть, там дальше бы понял, как это лучше соединить там.

Автор - ant6729
Дата добавления - 19.05.2016 в 14:51
anvg Дата: Четверг, 19.05.2016, 15:25 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Доброе время суток
Разбирайте KML файл - там эти данные есть.
 
Ответить
СообщениеДоброе время суток
Разбирайте KML файл - там эти данные есть.

Автор - anvg
Дата добавления - 19.05.2016 в 15:25
ant6729 Дата: Пятница, 20.05.2016, 09:57 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Да, есть... нашел... правда, сделать с ними что-то сложно... почему - то координаты точки на карте разнятся с координатами в самом kml
И как - то по этой причина особо и не подтянешь ничего.
 
Ответить
СообщениеДа, есть... нашел... правда, сделать с ними что-то сложно... почему - то координаты точки на карте разнятся с координатами в самом kml
И как - то по этой причина особо и не подтянешь ничего.

Автор - ant6729
Дата добавления - 20.05.2016 в 09:57
anvg Дата: Пятница, 20.05.2016, 18:47 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
В KML в географических координатах, долгота и широта, можно пересчитать при желании. А собственно, по детальнее то нельзя задачу освятить? А то вы прям как с телефона инфу набираете - на буковках экономите.
 
Ответить
СообщениеВ KML в географических координатах, долгота и широта, можно пересчитать при желании. А собственно, по детальнее то нельзя задачу освятить? А то вы прям как с телефона инфу набираете - на буковках экономите.

Автор - anvg
Дата добавления - 20.05.2016 в 18:47
ant6729 Дата: Суббота, 21.05.2016, 22:36 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Нужно, чтобы при обведении точек на карте (1, 6, 9, 15) и названии зоны я мог скачать в Excel так, чтобы к точке потом привязывался идентификатор (название) зоны...

То есть создаем слой, обводим точки
Вся эта группа точек (адресов) у меня обведены и название зоны, например, "ПерваяЗона"

Потом я хочу сделать так, чтобы

в Excel у меня было что - то вроде

1 "ПерваяЗона"
6 "ПерваяЗона"
9 "ПерваяЗона"
15"ПерваяЗона"

Или как - то додуматься до того, чтобы это было возможно

В Excel из KML информация открывается что-то вроде

Например....:

Москва, ул. Мира, 35

Москва, ул. Мира, 36

Москва, ул. Мира, 37

Москва, ул. Мира, 38

"ПерваяЗона" ..................................(идет перечисление координат точек...1,6,9,15)
"ВтораяЗона" ...................................(-\\-)

Как это сцепить.... хрен его знает
 
Ответить
СообщениеНужно, чтобы при обведении точек на карте (1, 6, 9, 15) и названии зоны я мог скачать в Excel так, чтобы к точке потом привязывался идентификатор (название) зоны...

То есть создаем слой, обводим точки
Вся эта группа точек (адресов) у меня обведены и название зоны, например, "ПерваяЗона"

Потом я хочу сделать так, чтобы

в Excel у меня было что - то вроде

1 "ПерваяЗона"
6 "ПерваяЗона"
9 "ПерваяЗона"
15"ПерваяЗона"

Или как - то додуматься до того, чтобы это было возможно

В Excel из KML информация открывается что-то вроде

Например....:

Москва, ул. Мира, 35

Москва, ул. Мира, 36

Москва, ул. Мира, 37

Москва, ул. Мира, 38

"ПерваяЗона" ..................................(идет перечисление координат точек...1,6,9,15)
"ВтораяЗона" ...................................(-\\-)

Как это сцепить.... хрен его знает

Автор - ant6729
Дата добавления - 21.05.2016 в 22:36
anvg Дата: Воскресенье, 22.05.2016, 00:14 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Ant6729, мы так и будем на пальцах? Вы kml файл приложили бы что ли.
 
Ответить
СообщениеAnt6729, мы так и будем на пальцах? Вы kml файл приложили бы что ли.

Автор - anvg
Дата добавления - 22.05.2016 в 00:14
ant6729 Дата: Воскресенье, 22.05.2016, 18:10 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
)
К сообщению приложен файл: 0443934.xlsx (14.1 Kb)
 
Ответить
Сообщение)

Автор - ant6729
Дата добавления - 22.05.2016 в 18:10
ant6729 Дата: Воскресенье, 22.05.2016, 18:12 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Еще такой
К сообщению приложен файл: 5601094.xml (6.6 Kb)
 
Ответить
СообщениеЕще такой

Автор - ant6729
Дата добавления - 22.05.2016 в 18:12
ant6729 Дата: Воскресенье, 22.05.2016, 18:15 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
И такой...
К сообщению приложен файл: 3645435.kml (6.6 Kb)
 
Ответить
СообщениеИ такой...

Автор - ant6729
Дата добавления - 22.05.2016 в 18:15
anvg Дата: Воскресенье, 22.05.2016, 22:28 | Сообщение № 11
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Цитата
названиям этих точек или их атрибутам присваивалось название "область 1"?

Ну, вот, по представленным данным можно уже дать какой-то ответ. У вас, видимо, точки на карте, судя по содержимому взяты из готовой базы адресов Google. Для сравнения расставленные мной точки имеют координаты
[vba]
Код
<Placemark>
    <name>Моя точка</name>
    <styleUrl>#icon-962-3F5BA9-nodesc</styleUrl>
    <Point>
     <coordinates>30.4970169,60.2198665,0.0</coordinates>
    </Point>
   </Placemark>
[/vba]
В вашем же случае, придётся воспользоваться геокодированием, то есть по адресу получать данные о координатах точек. Считав координаты полигона в массив можно такой функцией
[vba]
Код
'ФУНКЦИЯ: определение вложености точки в многоугольник, заданный своими координатами
'положение точки на линии многоугольника считается отсутствием вложености.
'xy() - массив координат углов многоугольника, где координаты 1-ой = последней.
'первый индекс массива: 1 - координата X, 2 - координата Y
'второй индекс массива: номер точки в массиве
'Xo, Yo - координаты точки иследования
Function InPoligon(xy() As Double, Xo As Double, Yo As Double) As Boolean
  Dim dXnext As Double, dYnext As Double, Yb As Double
  Dim dXprev As Double, dYprev As Double, Resault As Integer
  Dim nextZone As Integer, prevZone As Integer, dZone As Integer, k As Integer
  Resault = 0
  For k = LBound(xy, 2) To UBound(xy, 2)
    dXnext = xy(1, k) - Xo: dYnext = xy(2, k) - Yo
    'проверка четверти плоскости
    nextZone = 0
    If (dXnext >= 0) And (dYnext > 0) Then nextZone = 1
    If (dXnext < 0) And (dYnext >= 0) Then nextZone = 2
    If (dXnext <= 0) And (dYnext < 0) Then nextZone = 3
    If (dXnext > 0) And (dYnext <= 0) Then nextZone = 4
    'If nextZone = 0 Then InPoligon = -100: Exit Function - на линии
    If nextZone = 0 Then InPoligon = False: Exit Function
    '
    If k > LBound(xy, 2) Then 'проверка перехода
      If nextZone <> prevZone Then 'переход в другую четверть
        dZone = nextZone - prevZone
        If dZone = 3 Then dZone = -1
        If dZone = -3 Then dZone = 1
        If (dZone = 2) Or (dZone = -2) Then 'переход через 2 четверти
          'If dXnext = dXprev Then InPoligon = -100: Exit Function - на линии
          Yb = (dYnext * dXprev - dYprev * dXnext) / (dXprev - dXnext)
          'If Yb = 0 Then InPoligon = -100: Exit Function - на линии
          If Yb = 0 Then InPoligon = False: Exit Function
          dZone = dZone * Sgn(Yb)
          If (prevZone = 2) Or (prevZone = 4) Then dZone = -dZone
        End If '(dZone = 2) Or (dZone = -2)
        Resault = Resault + dZone
      End If 'nextZone <> prevZone
    End If 'k > 1
    dXprev = dXnext: dYprev = dYnext: prevZone = nextZone
  Next k
  If Abs(Resault) = 4 Then
    InPoligon = True
  Else
    InPoligon = False
  End If
End Function 'InPoligon
[/vba]определить - лежит ли точка внутри заданного полигона и на основании этого подписывать её принадлежность тому или другому контуру. Как то так.
Успехов.
 
Ответить
Сообщение
Цитата
названиям этих точек или их атрибутам присваивалось название "область 1"?

Ну, вот, по представленным данным можно уже дать какой-то ответ. У вас, видимо, точки на карте, судя по содержимому взяты из готовой базы адресов Google. Для сравнения расставленные мной точки имеют координаты
[vba]
Код
<Placemark>
    <name>Моя точка</name>
    <styleUrl>#icon-962-3F5BA9-nodesc</styleUrl>
    <Point>
     <coordinates>30.4970169,60.2198665,0.0</coordinates>
    </Point>
   </Placemark>
[/vba]
В вашем же случае, придётся воспользоваться геокодированием, то есть по адресу получать данные о координатах точек. Считав координаты полигона в массив можно такой функцией
[vba]
Код
'ФУНКЦИЯ: определение вложености точки в многоугольник, заданный своими координатами
'положение точки на линии многоугольника считается отсутствием вложености.
'xy() - массив координат углов многоугольника, где координаты 1-ой = последней.
'первый индекс массива: 1 - координата X, 2 - координата Y
'второй индекс массива: номер точки в массиве
'Xo, Yo - координаты точки иследования
Function InPoligon(xy() As Double, Xo As Double, Yo As Double) As Boolean
  Dim dXnext As Double, dYnext As Double, Yb As Double
  Dim dXprev As Double, dYprev As Double, Resault As Integer
  Dim nextZone As Integer, prevZone As Integer, dZone As Integer, k As Integer
  Resault = 0
  For k = LBound(xy, 2) To UBound(xy, 2)
    dXnext = xy(1, k) - Xo: dYnext = xy(2, k) - Yo
    'проверка четверти плоскости
    nextZone = 0
    If (dXnext >= 0) And (dYnext > 0) Then nextZone = 1
    If (dXnext < 0) And (dYnext >= 0) Then nextZone = 2
    If (dXnext <= 0) And (dYnext < 0) Then nextZone = 3
    If (dXnext > 0) And (dYnext <= 0) Then nextZone = 4
    'If nextZone = 0 Then InPoligon = -100: Exit Function - на линии
    If nextZone = 0 Then InPoligon = False: Exit Function
    '
    If k > LBound(xy, 2) Then 'проверка перехода
      If nextZone <> prevZone Then 'переход в другую четверть
        dZone = nextZone - prevZone
        If dZone = 3 Then dZone = -1
        If dZone = -3 Then dZone = 1
        If (dZone = 2) Or (dZone = -2) Then 'переход через 2 четверти
          'If dXnext = dXprev Then InPoligon = -100: Exit Function - на линии
          Yb = (dYnext * dXprev - dYprev * dXnext) / (dXprev - dXnext)
          'If Yb = 0 Then InPoligon = -100: Exit Function - на линии
          If Yb = 0 Then InPoligon = False: Exit Function
          dZone = dZone * Sgn(Yb)
          If (prevZone = 2) Or (prevZone = 4) Then dZone = -dZone
        End If '(dZone = 2) Or (dZone = -2)
        Resault = Resault + dZone
      End If 'nextZone <> prevZone
    End If 'k > 1
    dXprev = dXnext: dYprev = dYnext: prevZone = nextZone
  Next k
  If Abs(Resault) = 4 Then
    InPoligon = True
  Else
    InPoligon = False
  End If
End Function 'InPoligon
[/vba]определить - лежит ли точка внутри заданного полигона и на основании этого подписывать её принадлежность тому или другому контуру. Как то так.
Успехов.

Автор - anvg
Дата добавления - 22.05.2016 в 22:28
ant6729 Дата: Понедельник, 23.05.2016, 10:52 | Сообщение № 12
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Круто, конечно....

Для меня было бы интересно, если бы я с первого раза понял)

Функцию в VBA прописал
Далее в ячейке прописываю =InPolygon (37.6330233,55.7905938,0.0 37.6342463,55.7895322,0.0 37.6369929,55.7913297,0.0 37.6348257,55.7924154,0.0 37.6330233,55.7905938,0.0(1.0) ....координаты точки исследования...)

Координаты напротив адреса нужно вытягивать дополнительной функцией? Помнится.. .была на форуме функция, проставляющая координаты точки... но она слишком медленная....

Можно ли принтскрин, как функция прописывается в ячейку???
 
Ответить
СообщениеКруто, конечно....

Для меня было бы интересно, если бы я с первого раза понял)

Функцию в VBA прописал
Далее в ячейке прописываю =InPolygon (37.6330233,55.7905938,0.0 37.6342463,55.7895322,0.0 37.6369929,55.7913297,0.0 37.6348257,55.7924154,0.0 37.6330233,55.7905938,0.0(1.0) ....координаты точки исследования...)

Координаты напротив адреса нужно вытягивать дополнительной функцией? Помнится.. .была на форуме функция, проставляющая координаты точки... но она слишком медленная....

Можно ли принтскрин, как функция прописывается в ячейку???

Автор - ant6729
Дата добавления - 23.05.2016 в 10:52
ant6729 Дата: Понедельник, 23.05.2016, 11:29 | Сообщение № 13
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
И еще вопрос

ок...
получил ключ для геокодирования
Адреса, допустим(я еще не пробовал и пока не понял, как конкретные нужные адреса загонять в json.... и что к чему) будут вытягиваться в json или xml....

Допустим, смогу как-то обработать эти документы с получить координаты точек в Excel

Потом, что делать...

Я в правильном направлении рассуждаю?)
 
Ответить
СообщениеИ еще вопрос

ок...
получил ключ для геокодирования
Адреса, допустим(я еще не пробовал и пока не понял, как конкретные нужные адреса загонять в json.... и что к чему) будут вытягиваться в json или xml....

Допустим, смогу как-то обработать эти документы с получить координаты точек в Excel

Потом, что делать...

Я в правильном направлении рассуждаю?)

Автор - ant6729
Дата добавления - 23.05.2016 в 11:29
ant6729 Дата: Понедельник, 23.05.2016, 13:51 | Сообщение № 14
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Ок, допустим я получил в Excel

Adress Google Yandex
Москва, проспект Мира, 71 55.7880540, 37.6343150 37.634317 55.78809
Москва, проспект Мира, 72 55.7889420, 37.6362330 37.636356 55.788945
Москва, проспект Мира, 73 55.7890812, 37.6343498 37.634272 55.789072
Москва, проспект Мира, 74 55.7895170, 37.6352640 37.635341 55.789143
Москва, проспект Мира, 75 55.7897608, 37.6344465 37.634326 55.789775
Москва, проспект Мира, 76 55.7904140, 37.6352610 37.635215 55.790737
Москва, проспект Мира, 77 55.7900105, 37.6348253 37.634299 55.789937
Москва, проспект Мира, 78 55.7914240, 37.6351680 37.635206 55.791258

Вообщем, все равно не понял, как проверить, что конкретные координаты принадлежат конкретному названию точки на карте (1, 2, 3, 4, 5, 6, 7, 8), каждая из которых принадлежит отдельно взятому Poligon...
И желательно, чтобы напротив каждого адреса ставилось название....

Или как-то еще...
 
Ответить
СообщениеОк, допустим я получил в Excel

Adress Google Yandex
Москва, проспект Мира, 71 55.7880540, 37.6343150 37.634317 55.78809
Москва, проспект Мира, 72 55.7889420, 37.6362330 37.636356 55.788945
Москва, проспект Мира, 73 55.7890812, 37.6343498 37.634272 55.789072
Москва, проспект Мира, 74 55.7895170, 37.6352640 37.635341 55.789143
Москва, проспект Мира, 75 55.7897608, 37.6344465 37.634326 55.789775
Москва, проспект Мира, 76 55.7904140, 37.6352610 37.635215 55.790737
Москва, проспект Мира, 77 55.7900105, 37.6348253 37.634299 55.789937
Москва, проспект Мира, 78 55.7914240, 37.6351680 37.635206 55.791258

Вообщем, все равно не понял, как проверить, что конкретные координаты принадлежат конкретному названию точки на карте (1, 2, 3, 4, 5, 6, 7, 8), каждая из которых принадлежит отдельно взятому Poligon...
И желательно, чтобы напротив каждого адреса ставилось название....

Или как-то еще...

Автор - ant6729
Дата добавления - 23.05.2016 в 13:51
anvg Дата: Понедельник, 23.05.2016, 17:44 | Сообщение № 15
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Вам нужно понять, что Excel не ГИС-система ака ArcMap, где можно выполнить пространственный запрос для получения атрибутов для объектов одного слоя по пересечению или нахождению в объекте другого слоя. Так что у вас единственный путь - написание макроса. Который через DOMDocument, используя XPath, находит необходимую информацию в KML. Для координат точек вам нужно строку превратить в пару чисел широта долгота, а для полигонов создать одномерный массив, в котором координата array(2n) содержит долготу, а array(2n+1) широту, тогда функция InPoligon и будет работать для проверки принадлежности точки полигону. А, зная какой полигон вы проверяете, вы по его атрибутивным данным в KML выводите на лист название точки и название полигона в котором она находится. Как-то так, если кратко.


Сообщение отредактировал anvg - Понедельник, 23.05.2016, 17:46
 
Ответить
СообщениеВам нужно понять, что Excel не ГИС-система ака ArcMap, где можно выполнить пространственный запрос для получения атрибутов для объектов одного слоя по пересечению или нахождению в объекте другого слоя. Так что у вас единственный путь - написание макроса. Который через DOMDocument, используя XPath, находит необходимую информацию в KML. Для координат точек вам нужно строку превратить в пару чисел широта долгота, а для полигонов создать одномерный массив, в котором координата array(2n) содержит долготу, а array(2n+1) широту, тогда функция InPoligon и будет работать для проверки принадлежности точки полигону. А, зная какой полигон вы проверяете, вы по его атрибутивным данным в KML выводите на лист название точки и название полигона в котором она находится. Как-то так, если кратко.

Автор - anvg
Дата добавления - 23.05.2016 в 17:44
ant6729 Дата: Понедельник, 23.05.2016, 21:08 | Сообщение № 16
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Месяц назад я бы вообще не понял, в чем дело

Хорошо, что xpath было в тестировании

Но все равно буду тыкаться, потому что ничего не понял.
 
Ответить
СообщениеМесяц назад я бы вообще не понял, в чем дело

Хорошо, что xpath было в тестировании

Но все равно буду тыкаться, потому что ничего не понял.

Автор - ant6729
Дата добавления - 23.05.2016 в 21:08
ant6729 Дата: Вторник, 24.05.2016, 15:19 | Сообщение № 17
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Логика правильная... но просмотрев KML файл... смог найти там только координаты полигона и название загруженных точек
Если прорабатывать макросами, то нужны координаты, и если получать геокодированием координаты точки, то можно или через через браузерную строку формировать запрос с ключем (есть возможность в google maps)

Вопрос, как массово получить географические координаты и полигона и точек в kml одновременно?

Вот kml файл.... DOMDocument... где координаты точек... их нет...
1) Какую конкретно строку нужно конвертировать в долготу и широту точек?

[vba]
Код
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Карта без названия</name>
<description>
<![CDATA[ ]]>
</description>
<Folder>
<name>Вторая карта.xlsx</name>
<Placemark>
<name>1.0</name>
<description>
<![CDATA[ Москва, проспект Мира, 71 ]]>
</description>
<styleUrl>#icon-503-D698AD</styleUrl>
<address>Москва, проспект Мира, 71</address>
</Placemark>
<Placemark>
<name>2.0</name>
<description>
<![CDATA[ Москва, проспект Мира, 72 ]]>
</description>
<styleUrl>#icon-503-93D7E8</styleUrl>
<address>Москва, проспект Мира, 72</address>
</Placemark>
<Placemark>
<name>3.0</name>
<description>
<![CDATA[ Москва, проспект Мира, 73 ]]>
</description>
<styleUrl>#icon-503-FAD199</styleUrl>
<address>Москва, проспект Мира, 73</address>
</Placemark>
<Placemark>
<name>4.0</name>
<description>
<![CDATA[ Москва, проспект Мира, 74 ]]>
</description>
<styleUrl>#icon-503-9FC3FF</styleUrl>
<address>Москва, проспект Мира, 74</address>
</Placemark>
<Placemark>
<name>5.0</name>
<description>
<![CDATA[ Москва, проспект Мира, 75 ]]>
</description>
<styleUrl>#icon-503-A7B5D7</styleUrl>
<address>Москва, проспект Мира, 75</address>
</Placemark>
<Placemark>
<name>6.0</name>
<description>
<![CDATA[ Москва, проспект Мира, 76 ]]>
</description>
<styleUrl>#icon-503-F9F7A6</styleUrl>
<address>Москва, проспект Мира, 76</address>
</Placemark>
<Placemark>
<name>7.0</name>
<description>
<![CDATA[ Москва, проспект Мира, 77 ]]>
</description>
<styleUrl>#icon-503-7C3592</styleUrl>
<address>Москва, проспект Мира, 77</address>
</Placemark>
<Placemark>
<name>8.0</name>
<description>
<![CDATA[ Москва, проспект Мира, 78 ]]>
</description>
<styleUrl>#icon-503-0BA9CC</styleUrl>
<address>Москва, проспект Мира, 78</address>
</Placemark>
</Folder>
<Folder>
<name>Слой без названия</name>
</Folder>
<Folder>
<name>Слой без названия</name>
</Folder>
<Folder>
<name>Слой без названия</name>
<Placemark>
<name>ПерваяЗона</name>
<styleUrl>#poly-000000-1-77-nodesc</styleUrl>
<Polygon>
<outerBoundaryIs>
<LinearRing>
<tessellate>1</tessellate>
<coordinates>
37.6330233,55.7905938,0.0 37.6342463,55.7895322,0.0 37.6369929,55.7913297,0.0 37.6348257,55.7924154,0.0 37.6330233,55.7905938,0.0
</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
<Placemark>
<name>ВтораяЗона</name>
<styleUrl>#poly-000000-1-77-nodesc</styleUrl>
<Polygon>
<outerBoundaryIs>
<LinearRing>
<tessellate>1</tessellate>
<coordinates>
37.633667,55.7891944,0.0 37.6337528,55.7869624,0.0 37.6378083,55.7886877,0.0 37.636199,55.7903887,0.0 37.6338387,55.7892547,0.0 37.633667,55.7891944,0.0
</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
</Folder>
<Style id="icon-503-0BA9CC">
<IconStyle>
<color>ffCCA90B</color>
<scale>1.1</scale>
<Icon>
<href>
http://www.gstatic.com/mapspro/images/stock/503-wht-blank_maps.png
</href>
</Icon>
<hotSpot x="16" y="31" xunits="pixels" yunits="insetPixels"></hotSpot>
</IconStyle>
</Style>
<Style id="icon-503-7C3592">
<IconStyle>
<color>ff92357C</color>
<scale>1.1</scale>
<Icon>
<href>
http://www.gstatic.com/mapspro/images/stock/503-wht-blank_maps.png
</href>
</Icon>
<hotSpot x="16" y="31" xunits="pixels" yunits="insetPixels"></hotSpot>
</IconStyle>
</Style>
<Style id="icon-503-93D7E8">
<IconStyle>
<color>ffE8D793</color>
<scale>1.1</scale>
<Icon>
<href>
http://www.gstatic.com/mapspro/images/stock/503-wht-blank_maps.png
</href>
</Icon>
<hotSpot x="16" y="31" xunits="pixels" yunits="insetPixels"></hotSpot>
</IconStyle>
</Style>
<Style id="icon-503-9FC3FF">
<IconStyle>
<color>ffFFC39F</color>
<scale>1.1</scale>
<Icon>
<href>
http://www.gstatic.com/mapspro/images/stock/503-wht-blank_maps.png
</href>
</Icon>
<hotSpot x="16" y="31" xunits="pixels" yunits="insetPixels"></hotSpot>
</IconStyle>
</Style>
<Style id="icon-503-A7B5D7">
<IconStyle>
<color>ffD7B5A7</color>
<scale>1.1</scale>
<Icon>
<href>
http://www.gstatic.com/mapspro/images/stock/503-wht-blank_maps.png
</href>
</Icon>
<hotSpot x="16" y="31" xunits="pixels" yunits="insetPixels"></hotSpot>
</IconStyle>
</Style>
<Style id="icon-503-D698AD">
<IconStyle>
<color>ffAD98D6</color>
<scale>1.1</scale>
<Icon>
<href>
http://www.gstatic.com/mapspro/images/stock/503-wht-blank_maps.png
</href>
</Icon>
<hotSpot x="16" y="31" xunits="pixels" yunits="insetPixels"></hotSpot>
</IconStyle>
</Style>
<Style id="icon-503-F9F7A6">
<IconStyle>
<color>ffA6F7F9</color>
<scale>1.1</scale>
<Icon>
<href>
http://www.gstatic.com/mapspro/images/stock/503-wht-blank_maps.png
</href>
</Icon>
<hotSpot x="16" y="31" xunits="pixels" yunits="insetPixels"></hotSpot>
</IconStyle>
</Style>
<Style id="icon-503-FAD199">
<IconStyle>
<color>ff99D1FA</color>
<scale>1.1</scale>
<Icon>
<href>
http://www.gstatic.com/mapspro/images/stock/503-wht-blank_maps.png
</href>
</Icon>
<hotSpot x="16" y="31" xunits="pixels" yunits="insetPixels"></hotSpot>
</IconStyle>
</Style>
<Style id="poly-000000-1-77-nodesc-normal">
<LineStyle>
<color>ff000000</color>
<width>1</width>
</LineStyle>
<PolyStyle>
<color>4D000000</color>
<fill>1</fill>
<outline>1</outline>
</PolyStyle>
<BalloonStyle>
<text>
<![CDATA[ <h3>$[name]</h3> ]]>
</text>
</BalloonStyle>
</Style>
<Style id="poly-000000-1-77-nodesc-highlight">
<LineStyle>
<color>ff000000</color>
<width>2.0</width>
</LineStyle>
<PolyStyle>
<color>4D000000</color>
<fill>1</fill>
<outline>1</outline>
</PolyStyle>
<BalloonStyle>
<text>
<![CDATA[ <h3>$[name]</h3> ]]>
</text>
</BalloonStyle>
</Style>
<StyleMap id="poly-000000-1-77-nodesc">
<Pair>
<key>normal</key>
<styleUrl>#poly-000000-1-77-nodesc-normal</styleUrl>
</Pair>
<Pair>
<key>highlight</key>
<styleUrl>#poly-000000-1-77-nodesc-highlight</styleUrl>
</Pair>
</StyleMap>
</Document>
</kml>
[/vba]

2) Если я не ошибаюсь, координаты точек полигона даны в форме одномерного массива уже в kml?
 
Ответить
СообщениеЛогика правильная... но просмотрев KML файл... смог найти там только координаты полигона и название загруженных точек
Если прорабатывать макросами, то нужны координаты, и если получать геокодированием координаты точки, то можно или через через браузерную строку формировать запрос с ключем (есть возможность в google maps)

Вопрос, как массово получить географические координаты и полигона и точек в kml одновременно?

Вот kml файл.... DOMDocument... где координаты точек... их нет...
1) Какую конкретно строку нужно конвертировать в долготу и широту точек?

[vba]
Код
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Карта без названия</name>
<description>
<![CDATA[ ]]>
</description>
<Folder>
<name>Вторая карта.xlsx</name>
<Placemark>
<name>1.0</name>
<description>
<![CDATA[ Москва, проспект Мира, 71 ]]>
</description>
<styleUrl>#icon-503-D698AD</styleUrl>
<address>Москва, проспект Мира, 71</address>
</Placemark>
<Placemark>
<name>2.0</name>
<description>
<![CDATA[ Москва, проспект Мира, 72 ]]>
</description>
<styleUrl>#icon-503-93D7E8</styleUrl>
<address>Москва, проспект Мира, 72</address>
</Placemark>
<Placemark>
<name>3.0</name>
<description>
<![CDATA[ Москва, проспект Мира, 73 ]]>
</description>
<styleUrl>#icon-503-FAD199</styleUrl>
<address>Москва, проспект Мира, 73</address>
</Placemark>
<Placemark>
<name>4.0</name>
<description>
<![CDATA[ Москва, проспект Мира, 74 ]]>
</description>
<styleUrl>#icon-503-9FC3FF</styleUrl>
<address>Москва, проспект Мира, 74</address>
</Placemark>
<Placemark>
<name>5.0</name>
<description>
<![CDATA[ Москва, проспект Мира, 75 ]]>
</description>
<styleUrl>#icon-503-A7B5D7</styleUrl>
<address>Москва, проспект Мира, 75</address>
</Placemark>
<Placemark>
<name>6.0</name>
<description>
<![CDATA[ Москва, проспект Мира, 76 ]]>
</description>
<styleUrl>#icon-503-F9F7A6</styleUrl>
<address>Москва, проспект Мира, 76</address>
</Placemark>
<Placemark>
<name>7.0</name>
<description>
<![CDATA[ Москва, проспект Мира, 77 ]]>
</description>
<styleUrl>#icon-503-7C3592</styleUrl>
<address>Москва, проспект Мира, 77</address>
</Placemark>
<Placemark>
<name>8.0</name>
<description>
<![CDATA[ Москва, проспект Мира, 78 ]]>
</description>
<styleUrl>#icon-503-0BA9CC</styleUrl>
<address>Москва, проспект Мира, 78</address>
</Placemark>
</Folder>
<Folder>
<name>Слой без названия</name>
</Folder>
<Folder>
<name>Слой без названия</name>
</Folder>
<Folder>
<name>Слой без названия</name>
<Placemark>
<name>ПерваяЗона</name>
<styleUrl>#poly-000000-1-77-nodesc</styleUrl>
<Polygon>
<outerBoundaryIs>
<LinearRing>
<tessellate>1</tessellate>
<coordinates>
37.6330233,55.7905938,0.0 37.6342463,55.7895322,0.0 37.6369929,55.7913297,0.0 37.6348257,55.7924154,0.0 37.6330233,55.7905938,0.0
</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
<Placemark>
<name>ВтораяЗона</name>
<styleUrl>#poly-000000-1-77-nodesc</styleUrl>
<Polygon>
<outerBoundaryIs>
<LinearRing>
<tessellate>1</tessellate>
<coordinates>
37.633667,55.7891944,0.0 37.6337528,55.7869624,0.0 37.6378083,55.7886877,0.0 37.636199,55.7903887,0.0 37.6338387,55.7892547,0.0 37.633667,55.7891944,0.0
</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
</Folder>
<Style id="icon-503-0BA9CC">
<IconStyle>
<color>ffCCA90B</color>
<scale>1.1</scale>
<Icon>
<href>
http://www.gstatic.com/mapspro/images/stock/503-wht-blank_maps.png
</href>
</Icon>
<hotSpot x="16" y="31" xunits="pixels" yunits="insetPixels"></hotSpot>
</IconStyle>
</Style>
<Style id="icon-503-7C3592">
<IconStyle>
<color>ff92357C</color>
<scale>1.1</scale>
<Icon>
<href>
http://www.gstatic.com/mapspro/images/stock/503-wht-blank_maps.png
</href>
</Icon>
<hotSpot x="16" y="31" xunits="pixels" yunits="insetPixels"></hotSpot>
</IconStyle>
</Style>
<Style id="icon-503-93D7E8">
<IconStyle>
<color>ffE8D793</color>
<scale>1.1</scale>
<Icon>
<href>
http://www.gstatic.com/mapspro/images/stock/503-wht-blank_maps.png
</href>
</Icon>
<hotSpot x="16" y="31" xunits="pixels" yunits="insetPixels"></hotSpot>
</IconStyle>
</Style>
<Style id="icon-503-9FC3FF">
<IconStyle>
<color>ffFFC39F</color>
<scale>1.1</scale>
<Icon>
<href>
http://www.gstatic.com/mapspro/images/stock/503-wht-blank_maps.png
</href>
</Icon>
<hotSpot x="16" y="31" xunits="pixels" yunits="insetPixels"></hotSpot>
</IconStyle>
</Style>
<Style id="icon-503-A7B5D7">
<IconStyle>
<color>ffD7B5A7</color>
<scale>1.1</scale>
<Icon>
<href>
http://www.gstatic.com/mapspro/images/stock/503-wht-blank_maps.png
</href>
</Icon>
<hotSpot x="16" y="31" xunits="pixels" yunits="insetPixels"></hotSpot>
</IconStyle>
</Style>
<Style id="icon-503-D698AD">
<IconStyle>
<color>ffAD98D6</color>
<scale>1.1</scale>
<Icon>
<href>
http://www.gstatic.com/mapspro/images/stock/503-wht-blank_maps.png
</href>
</Icon>
<hotSpot x="16" y="31" xunits="pixels" yunits="insetPixels"></hotSpot>
</IconStyle>
</Style>
<Style id="icon-503-F9F7A6">
<IconStyle>
<color>ffA6F7F9</color>
<scale>1.1</scale>
<Icon>
<href>
http://www.gstatic.com/mapspro/images/stock/503-wht-blank_maps.png
</href>
</Icon>
<hotSpot x="16" y="31" xunits="pixels" yunits="insetPixels"></hotSpot>
</IconStyle>
</Style>
<Style id="icon-503-FAD199">
<IconStyle>
<color>ff99D1FA</color>
<scale>1.1</scale>
<Icon>
<href>
http://www.gstatic.com/mapspro/images/stock/503-wht-blank_maps.png
</href>
</Icon>
<hotSpot x="16" y="31" xunits="pixels" yunits="insetPixels"></hotSpot>
</IconStyle>
</Style>
<Style id="poly-000000-1-77-nodesc-normal">
<LineStyle>
<color>ff000000</color>
<width>1</width>
</LineStyle>
<PolyStyle>
<color>4D000000</color>
<fill>1</fill>
<outline>1</outline>
</PolyStyle>
<BalloonStyle>
<text>
<![CDATA[ <h3>$[name]</h3> ]]>
</text>
</BalloonStyle>
</Style>
<Style id="poly-000000-1-77-nodesc-highlight">
<LineStyle>
<color>ff000000</color>
<width>2.0</width>
</LineStyle>
<PolyStyle>
<color>4D000000</color>
<fill>1</fill>
<outline>1</outline>
</PolyStyle>
<BalloonStyle>
<text>
<![CDATA[ <h3>$[name]</h3> ]]>
</text>
</BalloonStyle>
</Style>
<StyleMap id="poly-000000-1-77-nodesc">
<Pair>
<key>normal</key>
<styleUrl>#poly-000000-1-77-nodesc-normal</styleUrl>
</Pair>
<Pair>
<key>highlight</key>
<styleUrl>#poly-000000-1-77-nodesc-highlight</styleUrl>
</Pair>
</StyleMap>
</Document>
</kml>
[/vba]

2) Если я не ошибаюсь, координаты точек полигона даны в форме одномерного массива уже в kml?

Автор - ant6729
Дата добавления - 24.05.2016 в 15:19
anvg Дата: Вторник, 24.05.2016, 22:13 | Сообщение № 18
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Цитата
если получать геокодированием координаты точки

Для этого нужно формировать запрос к maps.google (как описано по ссылке выше), используя объект ServerXMLHTTP текст адреса точки. Как отклик получите xml-ответ, содержащий описание объекта включая его координаты. Вот их и используете.
Цитата
Какую конкретно строку нужно конвертировать в долготу и широту точек?

Цитата
Если я не ошибаюсь, координаты точек полигона даны в форме одномерного массива уже в kml?
Увы - ошибаетесь.
Координаты точек в вашем файле только для полигонов. Это текстовая строка, содержащая для каждой точки полигона, три координаты: долготу, широту и возвышение. Разбиваете через Split на массив строк, затем преобразовываете в числа, используя Application.Evaluate (она всегда воспринимает точку, как десятичный разделитель).
Цитата
Я в правильном направлении рассуждаю?)

Худо-бедно, да. Только вот, учитывая ваш уровень владения материалом, мне пришлось бы детально расписывать алгоритм, а это не 10-15 минут. Уж, извините.
Кратко
1. Из KML файла для каждого полигона сформировать числовой массив координат (для работы с InPolygon) и сопоставить массиву имя полигона (можно создать для этого пользовательский класс).
2. Для каждой точки Placemark проверять наличие тега координат, если есть, то преобразовывать текст координат в числа координат
3. Если координат есть, то создать запрос геокодирования и из полученного ответа извлекать координаты точки.
4. Проверять через InPolygon в каком полигоне точка, тот полигон, для которого функция вернёт True считаем полигоном, содержащим точку, используем ассоциированное имя полигона.
5. Выводим название точки и название полигона, которому она принадлежит на лист.
 
Ответить
Сообщение
Цитата
если получать геокодированием координаты точки

Для этого нужно формировать запрос к maps.google (как описано по ссылке выше), используя объект ServerXMLHTTP текст адреса точки. Как отклик получите xml-ответ, содержащий описание объекта включая его координаты. Вот их и используете.
Цитата
Какую конкретно строку нужно конвертировать в долготу и широту точек?

Цитата
Если я не ошибаюсь, координаты точек полигона даны в форме одномерного массива уже в kml?
Увы - ошибаетесь.
Координаты точек в вашем файле только для полигонов. Это текстовая строка, содержащая для каждой точки полигона, три координаты: долготу, широту и возвышение. Разбиваете через Split на массив строк, затем преобразовываете в числа, используя Application.Evaluate (она всегда воспринимает точку, как десятичный разделитель).
Цитата
Я в правильном направлении рассуждаю?)

Худо-бедно, да. Только вот, учитывая ваш уровень владения материалом, мне пришлось бы детально расписывать алгоритм, а это не 10-15 минут. Уж, извините.
Кратко
1. Из KML файла для каждого полигона сформировать числовой массив координат (для работы с InPolygon) и сопоставить массиву имя полигона (можно создать для этого пользовательский класс).
2. Для каждой точки Placemark проверять наличие тега координат, если есть, то преобразовывать текст координат в числа координат
3. Если координат есть, то создать запрос геокодирования и из полученного ответа извлекать координаты точки.
4. Проверять через InPolygon в каком полигоне точка, тот полигон, для которого функция вернёт True считаем полигоном, содержащим точку, используем ассоциированное имя полигона.
5. Выводим название точки и название полигона, которому она принадлежит на лист.

Автор - anvg
Дата добавления - 24.05.2016 в 22:13
ant6729 Дата: Суббота, 28.05.2016, 03:55 | Сообщение № 19
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
по разному извращался, разными кодами в разных вариантах

прошу помочь прописать все таки формулы
потому что точки, по идее, принадлежат
но true ставить не хотят......... и где косяк, не ясно....
К сообщению приложен файл: inpol.xlsm (21.7 Kb)
 
Ответить
Сообщениепо разному извращался, разными кодами в разных вариантах

прошу помочь прописать все таки формулы
потому что точки, по идее, принадлежат
но true ставить не хотят......... и где косяк, не ясно....

Автор - ant6729
Дата добавления - 28.05.2016 в 03:55
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Как привязать область к номеру точек через Googlemaps (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!