Hướng dẫn world map visualization python - python hiển thị bản đồ thế giới
Giả sử rằng bạn đang làm việc trong một startup và bạn cần tiến hành phân tích dữ liệu không gian và dự đoán cho người dùng dữ liệu địa lý. Hoặc công ty của bạn chạy rất nhiều hoạt động giao hàng và công việc của bạn một lần nữa để phân tích, trực quan hóa và có thể dự đoán các trình điều khiển hoặc người dùng dữ liệu địa lý. Vì vậy, trực quan hóa dữ liệu của bạn (có thể dự đoán) trên bản đồ sẽ rất cần thiết.ssume that you are working in a startup and you need to conduct spatial data analysis and prediction to users’ geographical data. Or your company runs a lot of delivery operations and your job again to analyze, visualize and maybe predict the drivers or users’ geographical data. So, visualizing your data (predicted ones maybe) on a map will be very necessary. Show Trong bài viết này, tôi sẽ trải qua các bước dễ dàng về cách vẽ dữ liệu địa lý trên bất kỳ bản đồ nào bằng Python. Điều mà tôi thấy nó rất hữu ích và hữu ích trong các dự án trước đây của tôi bằng cách sử dụng cùng một ngôn ngữ: Python- Kiểm tra bài viết của tôi: Phân tích dữ liệu không gian để quản lý giao thông. Tất nhiên, khi chúng tôi đề cập đến dữ liệu địa lý, nó đi qua tâm trí chúng tôi tọa độ của một điểm dữ liệu là: kinh độ và vĩ độ. Điều này là đúng, chúng chỉ là tọa độ X và Y cho một điểm cụ thể trên bản đồ. Tuy nhiên, có các loại dữ liệu địa lý khác, chẳng hạn như đa giác, dữ liệu dòng. Trọng tâm chính ở đây sẽ là cách trực quan hóa dữ liệu điểm trên bản đồ. chúng ta bắt đầu chứ? Tải thư viện và bộ dữ liệuĐầu tiên, chúng ta hãy bắt đầu bằng cách tải các thư viện import numpy as np Đang tải bộ dữ liệu không gian df = pd.read_csv(‘C:/.. …/SpatialDataSet.txt’) Nhìn vào bộ dữ liệu df.head() Bộ dữ liệu của tôi là một dữ liệu đơn giản (1444 hàng × 2 cột). Tôi đã thu thập các điểm dữ liệu địa lý ngẫu nhiên ở thành phố Riyadh cho cuộc biểu tình này. Xác định hộp giới hạnBây giờ, chúng ta phải xác định hộp giới hạn. Hộp giới hạn là khu vực được xác định bởi hai kinh độ và hai vĩ độ sẽ bao gồm tất cả các điểm không gian. BBox = ((df.longitude.min(), df.longitude.max(), Nhận bản đồ của bạnTruy cập trang web opestreetmap.org và xuất bản đồ mong muốn dưới dạng hình ảnh bằng cách nhập dữ liệu hộp giới hạn. Tôi đã làm giống như được giải thích trong hình ảnh dưới đây (chi tiết khác cũng được đề cập ở đây: các bước để xuất hình ảnh bản đồ). Quay lại môi trường mã hóa và tải hình ảnh bản đồ: ruh_m = plt.imread('C:/.. … /Riyadh_map.png') Bước cuối cùng: VẽCuối cùng, hãy vẽ các tọa độ ‘df.longitude và‘ df.latitude, dưới dạng các điểm phân tán trên hình ảnh bản đồ ‘Ruh_m. Lưu ý rằng điều quan trọng là phải thiết lập trục x và trục y theo hộp giới hạn ‘bbox fig, ax = plt.subplots(figsize = (8,7))ax.scatter(df.longitude, df.latitude, zorder=1, alpha= 0.2, c='b', s=10)ax.set_title('Plotting Spatial Data on Riyadh Map') (Tiếng Anh dưới đây) Geopandas 0.9.0 Geopandas là một dự án mà nguồn mở Giúp lÀm Việc với dữ liệu Địa không Gian Trong Python dễ dàng Hơn. Geopandas mở rộng các Kiểu dữ liệu được Khung dữ liệu pandas & nbsp; Các Phép Toán Hình Học ĐC thực Hiện Bởi Định hình. Geopandas Còn phụ THUộC VOO FIONA Để TRUY CậP TệP VÀ MATPLOTLIB Để Vẽ BIểU Đồ. & nbsp;Miêu tả mục tiêu của Geopandas là Giúp lÀm Việc với dữ liệu ĐịA Không Gian Trong Python Dễ Dàng Hơn. Nó kết Geopandas Cho Phép bạn dễ dà Geopandas là một dự án dẫn Đầu cộng Đồng & nbsp; Được Viết, sử dụng và hỗ trợ bởi nhiều người từ Khắp nơi trênn thế giới với Nhiều ngg Geopandas sẽ luôn là phần mềm ngg Thông tin Chi tiết về hướng dẫn sử dụng:
https://geopandas.org/getting_started.html
https://geopandas.org/docs.html
https://geopandas.org/about.html
https://geopandas.org/community.html ------- Sử dụng dữ liệu không gian địa lý trong Python dễ dàng hơn với GeoPandas GeoPandas là một dự án nguồn mở để làm cho việc làm việc với dữ liệu không gian địa lý trong Python dễ dàng hơn. GeoPandas mở rộng các kiểu dữ liệu được sử dụng bởi gấu trúc để cho phép các hoạt động không gian trên các loại hình học. Các hoạt động hình học được thực hiện bằng hình dạng. Geopandas tiếp tục phụ thuộc vào fiona để truy cập tệp và matplotlib để vẽ đồ thị. Mô tả Mục tiêu của GeoPandas là làm cho việc làm việc với dữ liệu không gian địa lý trong Python dễ dàng hơn. Nó kết hợp các khả năng của gấu trúc và định hình, cung cấp các hoạt động không gian địa lý trong gấu trúc và giao diện cấp cao cho nhiều hình học để định hình. Geopandas cho phép bạn dễ dàng thực hiện các hoạt động trong Python nếu không yêu cầu một cơ sở dữ liệu không gian như Postgis. Geopandas là một dự án do cộng đồng lãnh đạo, được sử dụng và hỗ trợ bởi nhiều người từ khắp nơi trên thế giới của nhiều nền tảng lớn. & NBSP; GeoPandas sẽ luôn là phần mềm nguồn mở 100%, miễn phí cho tất cả mọi người sử dụng và phát hành theo các điều khoản tự do của giấy phép điều khoản BSD-3. Thông tin về thông tin: & NBSP; Bắt đầu & nbsp; https://geopandas.org/getting_started.html tài liệu https://geopandas.org/docs.html về Geopandas https://geopandas.org/about.html & nbsp; GeoLink tổng hợp từ Geopandas Là một thực tập sinh tại Forsk Technologies, tôi đã khám phá khá nhiều thư viện Python (matplotlib, gandas, numpy, seeborn, shapefile, basemap, geopandas) đã thực sự giúp vẽ dữ liệu (bằng cách nào đó dữ liệu thời gian thực cũng vậy ..) trên bản đồ.FORSK TECHNOLOGIES,I have explored quite a few Python libraries (Matplotlib, Pandas, Numpy, Seaborn, Shapefile, Basemap, Geopandas) which have really helped in plotting data(somehow real-time data too..) over maps. Ánh xạ địa lý trong PythonTrực quan hóa dữ liệu trên bản đồ là rất hữu ích trong khi làm việc trên khoa học dữ liệu có thể được thực hiện thông qua các mô -đun như GeoPandas, v.v ... Ở đây chúng tôi sẽ khám phá phương pháp để tạo bản đồ địa lý và trực quan hóa dữ liệu trên nó, sử dụng Shapefiles (.shp) và một số khác Thư viện Python. Ở đây, chúng tôi sẽ làm việc về dân số thành phố Rajasthan sau khi trực quan hóa dữ liệu trên bản đồ. Shapefile cần thiết cho bài viết này có thể được tải xuống từ liên kết này bấm vào đâyclick here Cài đặt thư viện Shapefile ~ conda/pip install pyshp Nhập thư viện import numpy as np Khởi tạo bộ trực quan sns.set(style=”whitegrid”, palette=”pastel”, color_codes=True) sns.mpl.rc(“figure”, figsize=(10,6)) Mở bản đồ vector Bản đồ vector là một nhóm gồm một số tệp có định dạng .shp. #opening the vector mapshp_path = “\\District_Boundary.shp”#reading the shape file by using reader function of the shape libsf = shp.Reader(shp_path) Số lượng các hình dạng khác nhau được nhập bởi shp.reader df = pd.read_csv(‘C:/.. …/SpatialDataSet.txt’) 0Kết quả sẽ được đưa ra là 33 cho chúng ta biết rằng có 33 hình dạng hoặc chúng ta có thể nói các thành phố trong khu vực Rajasthan. Để khám phá những hồ sơ đó: df = pd.read_csv(‘C:/.. …/SpatialDataSet.txt’) 1 đầu ra mẫuĐể khám phá một bản ghi cụ thể trong đó 1 là ID hoặc số hàng và 0 đề cập đến cột: df = pd.read_csv(‘C:/.. …/SpatialDataSet.txt’) 2Result- df = pd.read_csv(‘C:/.. …/SpatialDataSet.txt’) 3Chuyển đổi dữ liệu ShapeFile thành Pandas DataFrames: Làm cho việc truy cập các thành phố dễ dàng hơn bằng cách chuyển đổi dữ liệu ShapeFile thành định dạng DataFrame của Pandas dễ chịu hơn. df = pd.read_csv(‘C:/.. …/SpatialDataSet.txt’) 4Trực quan hóa dữ liệu sau khi được chuyển đổi thành DataFrames nơi nó đề cập đến các hàng và cột df = pd.read_csv(‘C:/.. …/SpatialDataSet.txt’) 5DataFrame có hình dạng (33,6) có nghĩa là nó có 33 hàng và 6 cột trong đó. Hãy để xem một mẫu của DataFrame được tạo df = pd.read_csv(‘C:/.. …/SpatialDataSet.txt’) 6Kết quả sẽ trông giống như - Đầu raĐây là dây là vĩ độ và kinh độ sẽ được sử dụng để tạo bản đồ. Âm mưu bản đồ của một thành phố ở Rajasthan hoặc một hình dạng cụ thể với sự trợ giúp của matplotlib #a) vẽ hình dạng (đa giác) dựa trên tọa độ của thành phố và,,, #b) Tính toán và trả về điểm trung bình của hình dạng cụ thể đó (x0, y0). #Điểm trung bình này cũng được sử dụng để xác định nơi in tên thành phố. df = pd.read_csv(‘C:/.. …/SpatialDataSet.txt’) 7Đặt tên thành phố để vẽ bản đồ tương ứng df = pd.read_csv(‘C:/.. …/SpatialDataSet.txt’) 8Output
Vẽ đồ thị đầy đủ Chức năng đặc biệt này kết hợp tất cả các hình dạng đơn lẻ được tạo bằng tọa độ và hiển thị nó như một hình dạng kết hợp. df = pd.read_csv(‘C:/.. …/SpatialDataSet.txt’) 9Vẽ một bản đồ được phóng to Đầu radf.head() 0Làm nổi bật một hình dạng duy nhất trên bản đồ hoàn chỉnh Kết hợp các chức năng trước đó sẽ thực hiện công việc. Nơi chúng ta có thể vẽ một hình dạng duy nhất trên một bản đồ hoàn chỉnh. ID và mã màu sẽ là các tham số cần thiết cho hàm. Đầu radf.head() 1DesiredLàm nổi bật nhiều hình dạng trên bản đồ hoàn chỉnh với City ID từ Với sự trợ giúp của chức năng này, dưới dạng các tham số, chúng ta có thể cung cấp ID của nhiều thành phố sẽ dẫn đến việc làm nổi bật nhiều thành phố thay vì 1. df.head() 2Hãy để xem bản đồ trông như thế nào df.head() 3Làm nổi bật nhiều hình dạng trên bản đồ hoàn chỉnh bằng tên thành phố Gần đây, chúng tôi đã gặp phải vấn đề làm nổi bật các hình dạng với ID thành phố (chỉ mục) nhưng mặc dù chúng tôi có dữ liệu của chúng tôi là gấu trúc DataFrame, chúng tôi cũng có thể làm điều đó với việc đề cập đến các tên thành phố. df.head() 4Hãy để một cái nhìn vào đầu ra df.head() 5Vẽ một bản đồ nhiệt Đó là một loại bản đồ trong đó các hình dạng được lấp đầy với một màu cụ thể của cường độ khác nhau theo giá trị được cung cấp. Nó cung cấp giải thích dữ liệu rõ ràng trong định dạng địa lý. Trong hàm đầu tiên, chúng tôi sẽ chia danh sách dữ liệu của chúng tôi về các khoảng hoặc thùng trong đó mỗi thùng sẽ có cường độ màu cụ thể, 6 thùng và 4 pallet màu khác nhau. df.head() 6Các chức năng Plot_cities () và Plot_Map_Fill_Multiples_ids nên được điều chỉnh để tận dụng sơ đồ màu mới này: df.head() 7Hãy để lấy một ví dụ để vẽ dữ liệu theo định dạng trình bày bản đồ nhiệt. df.head() 8Vẽ dữ liệu thực Âm mưu dân số của khu vực Rajasthan ở đây được đề cập đến dữ liệu thực. df.head() 9Hy vọng bạn đã hiểu khái niệm âm mưu lập bản đồ thông qua các thư viện Python. Bạn có thể giới thiệu GitHub của tôi cho mã chính xác.GITHUB for the exact code. Lập bản đồ với địa chấtNhư chúng ta đã thấy quy trình ánh xạ với gấu trúc DataFrame, bây giờ, đến lượt bạn trực quan hóa nó với khung dữ liệu địa lý. GeoPandas giúp làm việc dễ dàng hơn với dữ liệu không gian địa lý (dữ liệu có thành phần địa lý đối với nó) trong Python. Nó kết hợp các khả năng của gấu trúc và định hình bằng cách vận hành một mã nhỏ gọn hơn nhiều. Đó là một trong những cách tốt nhất để bắt đầu với việc tạo bản đồ choropleth. Hãy bắt đầu với một số bản đồ thông qua Geopandas và hãy để bản đồ của Rajasthan, dân số trên đó! Shapefile được sử dụng trong chủ đề trước là đủ để làm việc hơn nữa cho địa chất. Cài đặt BBox = ((df.longitude.min(), df.longitude.max(),0 Bước đầu tiên là nhập các thư viện cần thiết BBox = ((df.longitude.min(), df.longitude.max(),1 Nhận dữ liệu quan tâm Rajasthan là tiểu bang lớn nhất của Ấn Độ là một quốc gia đông dân. Bản đồ dân số của nó sẽ làm cho hình dung đơn giản và hiệu quả hơn nhiều. Hãy để Lừa đặt đường dẫn để mở Shapefile cho khu vực Rajasthan thông qua Geopandas. BBox = ((df.longitude.min(), df.longitude.max(),2 Hãy để xem trước bản đồ BBox = ((df.longitude.min(), df.longitude.max(),3 Bây giờ, nó đã thời gian để mở tệp CSV chứa dữ liệu để vẽ đồ thị. Ở đây, chúng tôi cũng có thể tạo CSV cho dữ liệu cần thiết nhưng tôi chỉ trích xuất dữ liệu từ ShapeFile thay vì thực hiện CSV hoặc tìm kiếm nó trên web đã tiết kiệm rất nhiều thời gian. BBox = ((df.longitude.min(), df.longitude.max(),4 Hãy để xem trước khung geodatafr BBox = ((df.longitude.min(), df.longitude.max(),5 Bây giờ, hãy cùng tham gia geodata của chúng tôi với bộ dữ liệu của chúng tôi BBox = ((df.longitude.min(), df.longitude.max(),6 Đầu ra sau khi hợp nhất bộ dữ liệu Thời gian để ánh xạ Đầu tiên, chúng ta cần thực hiện một số công việc được yêu cầu trước cho matplotlib để vẽ bản đồ là thiết lập biến, phạm vi và tạo ra một con số cơ bản cho bản đồ. BBox = ((df.longitude.min(), df.longitude.max(),7 Thời gian để tạo bản đồ BBox = ((df.longitude.min(), df.longitude.max(),8 Đây là những gì chúng tôi muốn, bản đồ đã sẵn sàng! Nhưng đòi hỏi một số làm đẹp và tùy biến. BBox = ((df.longitude.min(), df.longitude.max(),9 Thanh màu là một điều bắt buộc trong bản đồ cho chúng ta biết các tham số cần tìm, hãy để tùy chỉnh nó vào bản đồ của chúng tôi. ruh_m = plt.imread('C:/.. … /Riyadh_map.png') 0Bạn có thể có lý do tại sao việc lập bản đồ với Geopandas là tốt hơn để bắt đầu. Nó có một mã rất nhỏ gọn và đơn giản và cung cấp một đầu ra mong muốn tuyệt vời. Chúng tôi có thể vẽ bất kỳ loại dữ liệu nào trên bất kỳ khu vực nào thông qua phương pháp này. Tham khảo GitHub của tôi cho mã chính xác.GITHUB for the exact code. Ánh xạ với BasemapBộ công cụ basemap matplotlib là một thư viện để vẽ dữ liệu 2D trên bản đồ trong Python. Basemap không tự mình thực hiện bất kỳ âm mưu nào nhưng cung cấp các cơ sở để chuyển đổi tọa độ thành một trong 25 dự báo bản đồ khác nhau. Matplotlib sau đó được sử dụng để vẽ các đường viền, hình ảnh, vectơ, đường hoặc điểm trong tọa độ được chuyển đổi. Các bộ dữ liệu bờ biển, sông và ranh giới chính trị được cung cấp, cùng với các phương pháp để vẽ chúng. Trong phần này, bạn sẽ tìm hiểu về việc vẽ dữ liệu trên bản đồ thông qua Bộ công cụ Basemap. Hãy cùng xem trực quan hóa bản đồ thông qua bộ công cụ Basemap. Cài đặt ruh_m = plt.imread('C:/.. … /Riyadh_map.png') 1Nhập thư viện ruh_m = plt.imread('C:/.. … /Riyadh_map.png') 2
ruh_m = plt.imread('C:/.. … /Riyadh_map.png') 3Hãy để Lừa nhận được dữ liệu quan tâm của chúng tôi được vẽ từ CSV và Shapefile. Tại đây, liên kết để tải xuống CSV Yêu cầu Nhấp vào Hereand Shapefile Yêu cầu Nhấp vào đâyCLICK HEREand shapefile required CLICK HERE ruh_m = plt.imread('C:/.. … /Riyadh_map.png') 4Chúng tôi bắt đầu bằng cách tải dữ liệu. Lat-dài đã được nhập từ một CSV riêng biệt được sản xuất và các dữ liệu khác như tên quận và dân số của chúng từ tệp .shp được tải xuống trong các phần trước. ruh_m = plt.imread('C:/.. … /Riyadh_map.png') 5
Tiếp theo, chúng tôi thiết lập phép chiếu bản đồ, phân tán dữ liệu và sau đó tạo một thanh màu ruh_m = plt.imread('C:/.. … /Riyadh_map.png') 6Bối cảnh bản đồ của chúng tôi hiện đã sẵn sàng để dữ liệu có thể được vẽ. Tại đây, Lat-dài của Rajasthan, Ấn Độ đã được thiết lập với dự đoán ‘LCC, với một lượng zoom nhất định để chỉ tập trung vào trạng thái cụ thể. Hãy để thêm một số chi tiết vào nó và tách các ranh giới. ruh_m = plt.imread('C:/.. … /Riyadh_map.png') 7Bây giờ là lúc để phân tán dữ liệu qua phép chiếu bản đồ và đặt thanh màu. ruh_m = plt.imread('C:/.. … /Riyadh_map.png') 8Có phải nó trông giống như thiếu một cái gì đó? Đúng! Tất nhiên, tên quận. Chúng tôi không thể xác định quận thông qua dự báo này. Hãy để âm mưu cho họ.
ruh_m = plt.imread('C:/.. … /Riyadh_map.png') 9Bây giờ, Lat-dài đã được lưu trữ vào một từ điển (DILT1) và tên quận trong một danh sách (List3). Hãy để sử dụng chúng để đặt tên các quận qua dự đoán. fig, ax = plt.subplots(figsize = (8,7))ax.scatter(df.longitude, df.latitude, zorder=1, alpha= 0.2, c='b', s=10)ax.set_title('Plotting Spatial Data on Riyadh Map')0 Tham khảo GitHub của tôi cho mã chính xác.GITHUB for the exact code. Ánh xạ với Basemap Bộ công cụ basemap matplotlib là một thư viện để vẽ dữ liệu 2D trên bản đồ trong Python. Basemap không tự mình thực hiện bất kỳ âm mưu nào nhưng cung cấp các cơ sở để chuyển đổi tọa độ thành một trong 25 dự báo bản đồ khác nhau. Matplotlib sau đó được sử dụng để vẽ các đường viền, hình ảnh, vectơ, đường hoặc điểm trong tọa độ được chuyển đổi. Các bộ dữ liệu bờ biển, sông và ranh giới chính trị được cung cấp, cùng với các phương pháp để vẽ chúng. |