Размещение координат на карте - Python - PullRequest
0 голосов
/ 26 мая 2018

Я пытаюсь нанести некоторые координаты (широты и долготы) поверх изображения карты.Данные, которые я строю, поступают из списка списков (лат и лон являются 2-м и 3-м элементами соответственно).Я немного читал о matplotlib и 'экстенте', но у меня все еще есть проблемы с выравниванием координат по карте (то есть я не могу заставить его 'масштабироваться' так сказать).

def mapping_data(atlas_data):
    i = 0
    x = []
    y = []
    while i < len(atlas_data):
        x.append(atlas_data[i][1])
        y.append(atlas_data[i][2])
        i = i + 1

    image = plt.imread('map.png')
    mapped = plt.imshow(image)
    plt.imshow(mpimg.imread('map.png'))
    plt.scatter(x, y)
    plt.show()

Когда я запускаю свой код как есть, я получаю im1 (карта нормальная, но указывает все в одном месте, а не на карте).Когда я добавляю желаемый экстент карты, как показано ниже:

(plt.imshow(mpimg.imread('map.png'), extent = (149.105, 149.130, -35.29, -35.27))

... Я получаю im2 (точки, как и раньше, но изображение карты переворачивается вверх ногами) ??

Может кто-нибудь пожалуйстапомочь мне с тем, что идет не так?Я пропустил шаг?Я был бы очень признателен за любую помощь в выравнивании вещей!

IM1 IM2

Вот пример данных, которые я используюдля справки:

[['Kookaburra',
  -35.27667,
  149.1097,
  'Australian National Botaniacl Gardens, Canberra',
  '2000-08-14',
  'Aves',
  'Coraciiformes',
  'Alcedinidae',
  'Dacelo',
  'Dacelo novaeguineae',
  'False'],
 ['White-faced heron',
  -35.272244105599064,
  149.12580246473127,
  'Sullivans Creek--Turner Parkland',
  '2016-08-09',
  'Aves',
  'Ciconiiformes',
  'Ardeidae',
  'Egretta',
  'Egretta novaehollandiae',
  'False'],
 ['Australian King-parrot',
  -35.274386,
  149.112636,
  'CSIRO (Black Mountain)',
  '2014-10-20',
  'Aves',
  'Psittaciformes',
  'Psittacidae',
  'Alisterus',
  'Alisterus scapularis',
  'False'],
 ['Eastern Spinebill',
  -35.27719917903922,
  149.10937031732462,
  'Australian National Botanic Gardens',
  '2000-09-08',
  'Aves',
  'Passeriformes',
  'Meliphagidae',
  'Acanthorhynchus',
  'Acanthorhynchus tenuirostris',
  'False'],
 ['Crimson Rosella',
  -35.2780499,
  149.11015749999999,
  'Australian National Botanic Gardens',
  '2003-08-08',
  'Aves',
  'Psittaciformes',
  'Psittacidae',
  'Platycercus',
  'Platycercus elegans',
  'False'],
 ['Australian Raven',
  -35.27856893080605,
  149.10974594347084,
  'Australian National Botanic Gardens',
  '2018-03-18',
  'Aves',
  'Passeriformes',
  'Corvidae',
  'Corvus',
  'Corvus coronoides',
  'False'],
 ['Australian King-parrot',
  -35.2780499,
  149.11015749999999,
  'Australian National Botanic Gardens',
  '2012-07-24',
  'Aves',
  'Psittaciformes',
  'Psittacidae',
  'Alisterus',
  'Alisterus scapularis',
  'False']]

1 Ответ

0 голосов
/ 24 июня 2018

Ты почти добрался там!Х и у нужно поменять местами.Я также немного очистил вашу функцию.

map with coords

Должно работать следующее:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg

fig, ax = plt.subplots()

atlas_data = [['Kookaburra',
  -35.27667,
  149.1097,
  'Australian National Botaniacl Gardens, Canberra',
  '2000-08-14',
  'Aves',
  'Coraciiformes',
  'Alcedinidae',
  'Dacelo',
  'Dacelo novaeguineae',
  'False'],
 ['White-faced heron',
  -35.272244105599064,
  149.12580246473127,
  'Sullivans Creek--Turner Parkland',
  '2016-08-09',
  'Aves',
  'Ciconiiformes',
  'Ardeidae',
  'Egretta',
  'Egretta novaehollandiae',
  'False'],
 ['Australian King-parrot',
  -35.274386,
  149.112636,
  'CSIRO (Black Mountain)',
  '2014-10-20',
  'Aves',
  'Psittaciformes',
  'Psittacidae',
  'Alisterus',
  'Alisterus scapularis',
  'False'],
 ['Eastern Spinebill',
  -35.27719917903922,
  149.10937031732462,
  'Australian National Botanic Gardens',
  '2000-09-08',
  'Aves',
  'Passeriformes',
  'Meliphagidae',
  'Acanthorhynchus',
  'Acanthorhynchus tenuirostris',
  'False'],
 ['Crimson Rosella',
  -35.2780499,
  149.11015749999999,
  'Australian National Botanic Gardens',
  '2003-08-08',
  'Aves',
  'Psittaciformes',
  'Psittacidae',
  'Platycercus',
  'Platycercus elegans',
  'False'],
 ['Australian Raven',
  -35.27856893080605,
  149.10974594347084,
  'Australian National Botanic Gardens',
  '2018-03-18',
  'Aves',
  'Passeriformes',
  'Corvidae',
  'Corvus',
  'Corvus coronoides',
  'False'],
 ['Australian King-parrot',
  -35.2780499,
  149.11015749999999,
  'Australian National Botanic Gardens',
  '2012-07-24',
  'Aves',
  'Psittaciformes',
  'Psittacidae',
  'Alisterus',
  'Alisterus scapularis',
  'False']]

def mapping_data(atlas_data):
    x, y = [], []
    for i in range(len(atlas_data)):
        x.append(atlas_data[i][1])
        y.append(atlas_data[i][2])

    return x, y

y, x = mapping_data(atlas_data)

ax.scatter(x, y, edgecolors='red', linewidths=2, zorder=2)
ax.imshow(mpimg.imread('https://preview.ibb.co/jSD99o/map.png'), extent=(149.105, 149.130, -35.29, -35.27), zorder=1)

plt.show()

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...