Cách tạo bản đồ bằng Python

Hướng dẫn này hướng dẫn bạn cách vẽ biểu đồ dữ liệu bản đồ trên bản đồ nền của OpenStreetMap bằng Python. Cho đến nay, tôi thường sử dụng

pip install .\package_wheels_windows\Fiona-1.8.9-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\GDAL-3.0.1-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Rtree-0.8.3-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Shapely-1.6.4.post2-cp37-cp37m-win_amd64.whl
3 hoặc
pip install .\package_wheels_windows\Fiona-1.8.9-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\GDAL-3.0.1-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Rtree-0.8.3-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Shapely-1.6.4.post2-cp37-cp37m-win_amd64.whl
4 cho nhu cầu lập bản đồ của mình, nhưng vì tôi dành khoảng 99% thời gian lập trình của mình với Python, nên tôi tự hỏi liệu có cách đơn giản nào để tạo bản đồ đẹp mắt thông qua Python không. Là nguồn dữ liệu, chúng tôi sử dụng thông tin về điểm ưa thích [POI] về thành phố Amsterdam. Cụ thể, chúng tôi muốn vẽ sơ đồ các nhà hàng và mật độ không gian của chúng trên bản đồ. Chúng tôi cũng sử dụng tệp hình đa giác của thành phố để xóa mọi điểm nằm ngoài ranh giới thành phố. Kết quả của hướng dẫn này sẽ giống như những hình ảnh sau đây

Mục lục

  • Mục lục
  • Cài đặt
  • nhập gói
  • Đang tải và tiền xử lý dữ liệu
  • Thêm bản đồ nền vào cốt truyện
  • Hiển thị biểu đồ KDE của phân bố không gian
  • Tô màu các điểm đánh dấu bằng thông tin KDE
  • Sử dụng các ký hiệu cụ thể hơn làm điểm đánh dấu bản đồ

Cài đặt

Hướng dẫn này yêu cầu cài đặt nhiều gói; . Bạn có thể bắt đầu bằng cách sao chép repo GitHub cho hướng dẫn này

git clone //github.com/InformationSystemsFreiburg/map_creation_amsterdam_python

Các gói sau đây bạn cần cài đặt làm bánh xe. Bạn tìm thấy chúng trong thư mục

pip install .\package_wheels_windows\Fiona-1.8.9-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\GDAL-3.0.1-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Rtree-0.8.3-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Shapely-1.6.4.post2-cp37-cp37m-win_amd64.whl
6

FionaGDAL
Rtree
Shapely

có thể được cài đặt dưới dạng bánh xe với mã này

pip install .\package_wheels_windows\Fiona-1.8.9-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\GDAL-3.0.1-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Rtree-0.8.3-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Shapely-1.6.4.post2-cp37-cp37m-win_amd64.whl

Sau đó, phần còn lại của các gói có thể dễ dàng cài đặt bằng cách sử dụng tệp

pip install .\package_wheels_windows\Fiona-1.8.9-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\GDAL-3.0.1-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Rtree-0.8.3-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Shapely-1.6.4.post2-cp37-cp37m-win_amd64.whl
7 được cung cấp

________số 8

nhập gói

Chúng tôi cần nhập khá nhiều gói trước khi có thể bắt đầu

import numpy as np
import pandas as pd
import geopandas as gpd
from scipy.stats import gaussian_kde
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
from matplotlib.path import Path
from matplotlib.textpath import TextToPath
import tilemapbase
import warnings
import matplotlib.cbook
warnings.filterwarnings["ignore", category=matplotlib.cbook.mplDeprecation]

import seaborn as sns
import shapely.speedups
shapely.speedups.enable[]

Tải xuống dữ liệu sau và giải nén nó vào. /thư mục dữ liệu của dự án này

  • Dữ liệu điểm ưa thích từ Bắc Hà Lan
  • Ranh giới thành phố dưới dạng GeoJSON

Bạn cũng phải giải nén

pip install .\package_wheels_windows\Fiona-1.8.9-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\GDAL-3.0.1-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Rtree-0.8.3-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Shapely-1.6.4.post2-cp37-cp37m-win_amd64.whl
8

Đang tải và tiền xử lý dữ liệu

Tải dữ liệu POI. Đối với gói vẽ đồ thị

pip install .\package_wheels_windows\Fiona-1.8.9-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\GDAL-3.0.1-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Rtree-0.8.3-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Shapely-1.6.4.post2-cp37-cp37m-win_amd64.whl
9, dữ liệu của chúng tôi cần nằm trong hệ quy chiếu tọa độ [CRS]
pip install -r requirements.txt
0, do đó chúng tôi phải chuyển đổi dữ liệu vị trí của mình cho phù hợp

pip install .\package_wheels_windows\Fiona-1.8.9-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\GDAL-3.0.1-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Rtree-0.8.3-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Shapely-1.6.4.post2-cp37-cp37m-win_amd64.whl
3

Lọc dữ liệu cho các nhà hàng [hoặc bất kỳ danh mục POI nào khác]

pip install .\package_wheels_windows\Fiona-1.8.9-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\GDAL-3.0.1-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Rtree-0.8.3-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Shapely-1.6.4.post2-cp37-cp37m-win_amd64.whl
4

xem nhanh dữ liệu

pip install .\package_wheels_windows\Fiona-1.8.9-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\GDAL-3.0.1-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Rtree-0.8.3-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Shapely-1.6.4.post2-cp37-cp37m-win_amd64.whl
5

osm_idcodefclassnamegeometry92308396872301restaurantde EethoekPOINT [521775. 259 6910003. 671]144340437962301nhà hàngSizzling WokPOINT [550760. 350 6853264. 008]………………3710071265621552301nhà hàngDuinberkPOINT [522497. 422 6928134. 759]3711171372544852301nhà hàngVleesch noch VischPOINT [542280. 944 6869060. 363]

Nhìn có vẻ ổn. Bây giờ để tải shapefile cho thành phố Amsterdam theo cách tương tự như trước đây

pip install .\package_wheels_windows\Fiona-1.8.9-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\GDAL-3.0.1-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Rtree-0.8.3-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Shapely-1.6.4.post2-cp37-cp37m-win_amd64.whl
6

hãy xem nhanh dữ liệu này

pip install .\package_wheels_windows\Fiona-1.8.9-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\GDAL-3.0.1-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Rtree-0.8.3-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Shapely-1.6.4.post2-cp37-cp37m-win_amd64.whl
7

Stadsdeel_codeStadsdeelOpp_m2geometry0ACentrum8043500POLYGON [[549136. 599 6867376. 523, 549133. 148 6…1BWestpoort28991600POLYGON [[543892. 115 6872660. 218, 543540. 457 6…2EW10629900POLYGON [[544918. 815 6870710. 847, 544873. 285 6…3FNieuw-Tây38015500POLYGON [[539955. 524 6866252. 019, 539951. 183 6…4KZuid17274000POLYGON [[547134. 629 6862225. 476, 547129. 731 6…5MOost30594900POLYGON [[560946. 039 6864490. 649, 560918. 543 6…6NNoord63828800POLYGON [[565410. 507 6870704. 099, 564865. 041 6…7TZuidoost22113700POLYGON [[558996. 500 6854997. 221, 558987. 372 6…

Dữ liệu này có vẻ tốt. Bây giờ chúng ta cần loại bỏ bất kỳ điểm nào nằm bên ngoài nội trú thành phố. Đối với điều này, chúng tôi thực hiện nối không gian giữa các điểm và đa giác và lọc ra bất kỳ điểm nào không khớp với đa giác. Sau khi tham gia, chúng tôi loại bỏ bất kỳ điểm nào chưa đạt được

pip install -r requirements.txt
1 từ các đa giác, có nghĩa là các điểm cụ thể nằm bên ngoài nội trú thành phố

FionaGDAL
Rtree
Shapely
0

Với dữ liệu không gian, chúng tôi luôn có thể vẽ biểu đồ dữ liệu để xem quá trình tiền xử lý của bạn có được thực hiện chính xác hay không

FionaGDAL
Rtree
Shapely
1

Dữ liệu dường như đã được nối như mong đợi. Nhưng bản đồ này trông vẫn khá xấu, vì vậy chúng ta nên cải thiện nó bằng cách thêm bản đồ cơ sở

Thêm bản đồ nền vào cốt truyện

Để có được một bản đồ nền đẹp, chúng ta cần tìm ra tất cả các ranh giới của dữ liệu và lưu dữ liệu đó để vẽ đồ thị sau này

FionaGDAL
Rtree
Shapely
2

tải bản đồ nền bằng cách sử dụng

pip install .\package_wheels_windows\Fiona-1.8.9-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\GDAL-3.0.1-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Rtree-0.8.3-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Shapely-1.6.4.post2-cp37-cp37m-win_amd64.whl
9

FionaGDAL
Rtree
Shapely
3

OK, bây giờ chúng ta có thể tiếp tục với âm mưu. Chúng ta cần đặt giới hạn của các trục theo các hộp giới hạn. Để phóng to, chúng ta có thể cộng hoặc trừ các giá trị đầu tiên trong ________ 83 và ________ 84

FionaGDAL
Rtree
Shapely
4

Bản đồ trông rất tuyệt. Chúng tôi muốn hiển thị dữ liệu trong một số loại biểu đồ khác nhau, nhưng vì hầu hết mã sẽ được sử dụng lại, chúng tôi cũng có thể tạo một chức năng nhỏ

FionaGDAL
Rtree
Shapely
5

Hiển thị biểu đồ KDE của phân bố không gian

Nếu chúng ta muốn có ấn tượng về phân bố không gian, một đồ thị KDE có thể hữu ích. Đối với điều này, chúng tôi sử dụng hàm

pip install -r requirements.txt
5 từ
pip install -r requirements.txt
6

FionaGDAL
Rtree
Shapely
6

Tô màu các điểm đánh dấu bằng thông tin KDE

Thay vì vẽ KDE dưới dạng một hình đơn lẻ, chúng ta cũng có thể tô màu các điểm của mình theo mật độ. Đối với điều này, chúng tôi tính riêng gaussian KDE và sử dụng kết quả làm giá trị z cho biểu đồ của chúng tôi. Các điểm đánh dấu có thể được thay đổi theo ý thích, trong trường hợp này, tôi đã giải quyết bằng các điểm đơn giản

FionaGDAL
Rtree
Shapely
7

FionaGDAL
Rtree
Shapely
8

Sử dụng các ký hiệu cụ thể hơn làm điểm đánh dấu bản đồ

Nếu bạn muốn thay đổi các điểm đánh dấu trong bản đồ thành các điểm đánh dấu phức tạp hơn, bạn cũng có thể sử dụng Font Awesome. Tải xuống phông chữ từ đây và lưu nó vào

pip install -r requirements.txt
7. Chỉnh sửa chính tả
pip install -r requirements.txt
8 để thêm các ký hiệu có thể phù hợp với chủ đề của bạn, một bảng gian lận cho các ký tự Unicode mà bạn có thể tìm thấy trên trang web fontawesome. Chỉ cần thêm một
pip install -r requirements.txt
9 vào bất kỳ ký tự Unicode nào

FionaGDAL
Rtree
Shapely
9

Bây giờ chúng ta có thể sử dụng các điểm đánh dấu này bằng lệnh

import numpy as np
import pandas as pd
import geopandas as gpd
from scipy.stats import gaussian_kde
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
from matplotlib.path import Path
from matplotlib.textpath import TextToPath
import tilemapbase
import warnings
import matplotlib.cbook
warnings.filterwarnings["ignore", category=matplotlib.cbook.mplDeprecation]

import seaborn as sns
import shapely.speedups
shapely.speedups.enable[]
0

pip install .\package_wheels_windows\Fiona-1.8.9-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\GDAL-3.0.1-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Rtree-0.8.3-cp37-cp37m-win_amd64.whl
pip install .\package_wheels_windows\Shapely-1.6.4.post2-cp37-cp37m-win_amd64.whl
0

Điều này có vẻ khá tốt. Và tất nhiên chúng ta cũng có thể kết hợp mật độ từ trước để tạo bản đồ cuối cùng

Làm cách nào để vẽ bản đồ bằng Python?

Theo liên kết này để biết thêm. .
Nhập thư viện. Trong 1]. nhập gấu trúc dưới dạng pd nhập geopanda dưới dạng gpd nhập matplotlib. pyplot dưới dạng plt
Đọc tệp dữ liệu. Trong 2]. df = pd. .
Đọc tập tin hình dạng. Trong 3]. shp_gdf = gpd. .
Hợp nhất tệp dữ liệu và tệp hình dạng dựa trên tên của các tiểu bang Ấn Độ. Trong [4]. .
Vẽ bản đồ của Ấn Độ

Bản đồ [] trong Python là gì?

Python's map[] là hàm tích hợp sẵn cho phép bạn xử lý và chuyển đổi tất cả các mục trong một lần lặp mà không cần sử dụng vòng lặp for rõ ràng, a technique commonly known as mapping. map[] is useful when you need to apply a transformation function to each item in an iterable and transform them into a new iterable.

Làm cách nào để thêm bản đồ bằng Python?

Hãy bắt đầu với google maps trong python. .
Xác định vị trí 1 trong tọa độ
Xác định vị trí 2 trong tọa độ
Tạo lớp bằng gmap. hướng. Hướng
Thêm lớp vào bản đồ

Cách sử dụng bản đồ trong danh sách Python?

Chúng ta có thể sử dụng hàm map[] tích hợp sẵn của Python để áp dụng một hàm cho từng mục trong một lần lặp [như danh sách hoặc từ điển] và trả về một trình vòng lặp mới để truy xuất . map[] trả về một đối tượng bản đồ [một trình vòng lặp] mà chúng ta có thể sử dụng trong các phần khác của chương trình. . map[] returns a map object [an iterator], which we can use in other parts of our program.

Chủ Đề