4 điểm bởi GN⁺ 2023-08-24 | 1 bình luận | Chia sẻ qua WhatsApp
  • Prettymapp là một ứng dụng web và gói Python để tạo bản đồ từ dữ liệu OpenStreetMap, hỗ trợ tạo bản đồ cả trong ứng dụng Streamlit lẫn bằng mã Python
  • Đây là dự án viết lại prettymaps, tập trung vào cấu hình phù hợp với giao diện ứng dụng web và tốc độ
  • Dự án chọn giảm bớt các tùy chọn cấu hình phức tạp, cải thiện tốc độ, giảm độ phức tạp của mã và đơn giản hóa giao diện cấu hình, đồng thời đã được kiểm thử một phần và bổ sung component ứng dụng web Streamlit
  • Ứng dụng web có thể dùng ngay tại prettymapp.streamlit.app, còn trên máy cục bộ có thể chạy bằng uv sync --extra streamlit rồi uv run streamlit run streamlit-prettymapp/app.py
  • Gói Python được cài bằng pip install prettymapp, và dùng get_aoi, get_osm_geometries, Plot, STYLES để định nghĩa khu vực, tải dữ liệu OSM, dựng bản đồ và lưu ảnh
  • Các kiểu mặc định gồm 4 loại: Peach, Auburn, Citrus, Flannel; có thể điều chỉnh kiểu và bố cục bằng draw_settings và các tham số của Plot như shape, contour_width
  • Có thể vẽ từ tệp OSM XML được xuất từ openstreetmap.org v.v. bằng get_osm_geometries_from_xml, và thay đổi việc chọn các lớp landcover OSM sẽ hiển thị bằng cấu hình LANDCOVER_CLASSES

1 bình luận

 
GN⁺ 2023-08-24
Ý kiến trên Hacker News
  • Với những ai muốn tùy biến bản đồ OSM, plugin Figma để lấy dữ liệu OSM khá hữu ích: https://www.figma.com/community/plugin/1251030017228239072/V...
  • Nhân lúc ứng dụng ví dụ rơi vào trạng thái từ chối dịch vụ, tôi đã tự triển khai lên Streamlit — thứ trước đây chưa từng dùng. Dự án không ghi tài liệu quy trình triển khai, nhưng chỉ cần tài liệu cấp trên là đã rất dễ rồi
    Bạn có thể tự thử tại: https://wfcmzortl5n8cqhdowr6dm.streamlit.app/
    • Khi chạy cục bộ thì tôi làm như sau
      pip install -r requirements.txt
      pip install -r requirements-dev.txt
      pip install -r streamlit-prettymapp/requirements.txt
      streamlit run streamlit-prettymapp/app.py
      Lệnh streamlit được cài bởi file requirements.txt thứ ba. Bản đồ Macau hiển thị đúng, nhưng bị kẹt ở Creating map... (may take up to a minute), nên tôi thắc mắc liệu khóa API OSM có không hoạt động không
      Cập nhật: Có vẻ ở những khu vực có khá nhiều phần tử OSM thì đơn giản là rất chậm. Thực ra nó đang kẹt ở bước chuyển OSM thành đối tượng hình học khi cố chuyển đổi 400 nghìn đối tượng
      Cập nhật 2: https://github.com/chrieke/prettymapp/issues/26
    • Không trụ được lâu nhỉ
    • Chỗ này cũng chết vì lưu lượng truy cập tăng vọt rồi ;)
  • Thật sự tuyệt vời. Tôi tò mò không biết có tài liệu API không. Sẽ rất hay nếu có thể căn giữa bản đồ theo vị trí GPS thay vì tên thành phố/thị trấn
    Khi tôi dùng tên thành phố của mình, nó lấy trung tâm thành phố làm mặc định hợp lý, nhưng khu tôi ở khá xa chỗ đó nên nếu không thu nhỏ rất nhiều thì không hiện trên bản đồ
  • Trước đây cũng đã được nhắc đến nhiều lần: https://hn.algolia.com/?q=Prettymap
    • Theo README, Prettymapp dựa trên bản viết lại từ dự án prettymaps xuất sắc của @marceloprates
  • Có ai biết rõ nó được phát hành theo giấy phép nào không? Bản gốc là AGPL, nên nếu bản viết lại dùng giấy phép thoáng hơn thì khá tốt
    • Có vẻ là MIT: https://github.com/chrieke/prettymapp/blob/main/setup.py#L15...
    • Bản gốc là AGPL còn bản mới là MIT, tôi tự hỏi liệu điều này có hợp pháp không
      Tôi không chắc đây thực sự là bản viết lại hay chỉ là bản phóng tác. Có thể không được đổi giấy phép, nên cần cẩn trọng
    • Vì sao đó lại là điều khá tốt?
  • Trông giống trình tạo cửa hàng Etsy
  • Một ứng dụng thú vị. Trước đây tôi cũng rất thích tùy biến bản đồ trên Ortelius trước khi nó biến mất, và Felt của felt.com cũng hay
  • MapTiler có một dịch vụ SaaS khá ổn. Chúng tôi đang dùng bản đồ vector của họ cùng với MapLibre
    Đây là một công ty tốt đang cố xây dựng kinh doanh bằng các công cụ và bản đồ tử tế trong lĩnh vực này, đồng thời đóng góp đáng kể cho mã nguồn mở. Một số công cụ của họ là mã nguồn mở nên cũng có thể tự host. Trên website cũng có các ví dụ bản đồ theo chủ đề khá ổn
  • Thật thú vị khi thấy một khái niệm mà mọi người từng mong đợi lại được hiện thực hóa dưới hình thức khác
    Tôi từng kỳ vọng lập trình hàm đại chúng sẽ là OCaml/Haskell, nhưng thực tế lại thành React, một thư viện JavaScript mang tính chất hàm; còn GUI immediate mode thì tôi từng kỳ vọng là imgui, nhưng có cảm giác nó đến dưới dạng như Gradio/Streamlit. Tôi chưa trực tiếp dùng, nhưng nhìn qua thì cảm thấy vậy
  • HN đã làm sập ứng dụng rồi!