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 đâyMụ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
6FionaGDAL
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ợppip 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
3Lọ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
4xem 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
5osm_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
6hã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
7Stadsdeel_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
0Vớ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
1Dữ 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
2tả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
9FionaGDAL
Rtree
Shapely
3OK, 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
4Bả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
5Hiể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
6FionaGDAL
Rtree
Shapely
6Tô 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
7FionaGDAL
Rtree
Shapely
8Sử 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àoFionaGDAL
Rtree
Shapely
9Bâ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[]
0pip 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