mirror of
https://github.com/marceloprates/prettymaps.git
synced 2025-09-03 03:13:47 +02:00
6093 lines
317 KiB
HTML
6093 lines
317 KiB
HTML
|
|
<!doctype html>
|
|
<html lang="en" class="no-js">
|
|
<head>
|
|
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
|
|
|
|
|
|
<link rel="canonical" href="https://yourusername.github.io/prettymaps/api/">
|
|
|
|
|
|
<link rel="prev" href="../usage/">
|
|
|
|
|
|
|
|
<link rel="icon" href="../assets/images/favicon.png">
|
|
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.18">
|
|
|
|
|
|
|
|
<title>API Reference - prettymaps</title>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../assets/stylesheets/main.7e37652d.min.css">
|
|
|
|
|
|
<link rel="stylesheet" href="../assets/stylesheets/palette.06af60db.min.css">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
|
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../assets/_mkdocstrings.css">
|
|
|
|
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="pink">
|
|
|
|
|
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
|
<label class="md-overlay" for="__drawer"></label>
|
|
<div data-md-component="skip">
|
|
|
|
|
|
<a href="#api-reference" class="md-skip">
|
|
Skip to content
|
|
</a>
|
|
|
|
</div>
|
|
<div data-md-component="announce">
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<header class="md-header md-header--shadow" data-md-component="header">
|
|
<nav class="md-header__inner md-grid" aria-label="Header">
|
|
<a href=".." title="prettymaps" class="md-header__button md-logo" aria-label="prettymaps" data-md-component="logo">
|
|
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
|
|
|
|
</a>
|
|
<label class="md-header__button md-icon" for="__drawer">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
|
|
</label>
|
|
<div class="md-header__title" data-md-component="header-title">
|
|
<div class="md-header__ellipsis">
|
|
<div class="md-header__topic">
|
|
<span class="md-ellipsis">
|
|
prettymaps
|
|
</span>
|
|
</div>
|
|
<div class="md-header__topic" data-md-component="header-topic">
|
|
<span class="md-ellipsis">
|
|
|
|
API Reference
|
|
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-header__button md-icon" for="__search">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
|
</label>
|
|
<div class="md-search" data-md-component="search" role="dialog">
|
|
<label class="md-search__overlay" for="__search"></label>
|
|
<div class="md-search__inner" role="search">
|
|
<form class="md-search__form" name="search">
|
|
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
|
<label class="md-search__icon md-icon" for="__search">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
|
|
</label>
|
|
<nav class="md-search__options" aria-label="Search">
|
|
|
|
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
|
|
</button>
|
|
</nav>
|
|
|
|
</form>
|
|
<div class="md-search__output">
|
|
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
|
|
<div class="md-search-result" data-md-component="search-result">
|
|
<div class="md-search-result__meta">
|
|
Initializing search
|
|
</div>
|
|
<ol class="md-search-result__list" role="presentation"></ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
</nav>
|
|
|
|
</header>
|
|
|
|
<div class="md-container" data-md-component="container">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<main class="md-main" data-md-component="main">
|
|
<div class="md-main__inner md-grid">
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
|
<label class="md-nav__title" for="__drawer">
|
|
<a href=".." title="prettymaps" class="md-nav__button md-logo" aria-label="prettymaps" data-md-component="logo">
|
|
|
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
|
|
|
|
</a>
|
|
prettymaps
|
|
</label>
|
|
|
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href=".." class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Home
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item">
|
|
<a href="../usage/" class="md-nav__link">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
Usage
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="md-nav__item md-nav__item--active">
|
|
|
|
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__link md-nav__link--active" for="__toc">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
API Reference
|
|
|
|
</span>
|
|
|
|
|
|
<span class="md-nav__icon md-icon"></span>
|
|
</label>
|
|
|
|
<a href="./" class="md-nav__link md-nav__link--active">
|
|
|
|
|
|
|
|
<span class="md-ellipsis">
|
|
API Reference
|
|
|
|
</span>
|
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
draw
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="draw">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.Plot" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Plot
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.PolygonPatch" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
PolygonPatch
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="PolygonPatch">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.PolygonPatch.__init__" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
__init__
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.Preset" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Preset
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.Subplot" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Subplot
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.create_background" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
create_background
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.create_preset" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
create_preset
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.draw_credit" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
draw_credit
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.draw_text" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
draw_text
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.gdf_to_shapely" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
gdf_to_shapely
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.geometries_to_shapely" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
geometries_to_shapely
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.graph_to_shapely" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
graph_to_shapely
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.manage_presets" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
manage_presets
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.multiplot" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
multiplot
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="multiplot">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.multiplot--parameters" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Parameters:
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.multiplot--returns" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Returns:
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.override_args" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
override_args
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.override_params" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
override_params
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.override_preset" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
override_preset
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.plot" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
plot
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.plot_gdf" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
plot_gdf
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.presets_directory" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
presets_directory
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.read_preset" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
read_preset
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.transform_gdfs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
transform_gdfs
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.fetch" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
fetch
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="fetch">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.fetch.get_keypoints" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
get_keypoints
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.fetch.merge_tags" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
merge_tags
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.fetch.obtain_elevation" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
obtain_elevation
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.fetch.read_from_cache" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
read_from_cache
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.fetch.unified_osm_request" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
unified_osm_request
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.fetch.write_to_cache" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
write_to_cache
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
|
<div class="md-sidebar__scrollwrap">
|
|
<div class="md-sidebar__inner">
|
|
|
|
|
|
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<label class="md-nav__title" for="__toc">
|
|
<span class="md-nav__icon md-icon"></span>
|
|
Table of contents
|
|
</label>
|
|
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
draw
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="draw">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.Plot" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Plot
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.PolygonPatch" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
PolygonPatch
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="PolygonPatch">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.PolygonPatch.__init__" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
__init__
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.Preset" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Preset
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.Subplot" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Subplot
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.create_background" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
create_background
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.create_preset" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
create_preset
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.draw_credit" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
draw_credit
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.draw_text" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
draw_text
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.gdf_to_shapely" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
gdf_to_shapely
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.geometries_to_shapely" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
geometries_to_shapely
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.graph_to_shapely" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
graph_to_shapely
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.manage_presets" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
manage_presets
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.multiplot" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
multiplot
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="multiplot">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.multiplot--parameters" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Parameters:
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.multiplot--returns" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
Returns:
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.override_args" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
override_args
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.override_params" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
override_params
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.override_preset" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
override_preset
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.plot" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
plot
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.plot_gdf" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
plot_gdf
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.presets_directory" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
presets_directory
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.read_preset" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
read_preset
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.draw.transform_gdfs" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
transform_gdfs
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.fetch" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
fetch
|
|
</span>
|
|
</a>
|
|
|
|
<nav class="md-nav" aria-label="fetch">
|
|
<ul class="md-nav__list">
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.fetch.get_keypoints" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
get_keypoints
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.fetch.merge_tags" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
merge_tags
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.fetch.obtain_elevation" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
obtain_elevation
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.fetch.read_from_cache" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
read_from_cache
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.fetch.unified_osm_request" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
unified_osm_request
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="md-nav__item">
|
|
<a href="#prettymaps.fetch.write_to_cache" class="md-nav__link">
|
|
<span class="md-ellipsis">
|
|
write_to_cache
|
|
</span>
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="md-content" data-md-component="content">
|
|
<article class="md-content__inner md-typeset">
|
|
|
|
|
|
|
|
|
|
|
|
<h1 id="api-reference">API Reference</h1>
|
|
<p>This section is auto-generated from the Prettymaps source code.</p>
|
|
|
|
|
|
<div class="doc doc-object doc-module">
|
|
|
|
|
|
|
|
<h2 id="prettymaps.draw" class="doc doc-heading">
|
|
<code>prettymaps.draw</code>
|
|
|
|
|
|
</h2>
|
|
|
|
<div class="doc doc-contents first">
|
|
|
|
<p>Prettymaps - A minimal Python library to draw pretty maps from OpenStreetMap Data
|
|
Copyright (C) 2021 Marcelo Prates</p>
|
|
<p>This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU Affero General Public License as published
|
|
by the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.</p>
|
|
<p>This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU Affero General Public License for more details.</p>
|
|
<p>You should have received a copy of the GNU Affero General Public License
|
|
along with this program. If not, see <a href="https://www.gnu.org/licenses/">https://www.gnu.org/licenses/</a>.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="prettymaps.draw.Plot" class="doc doc-heading">
|
|
<code>Plot</code>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-dataclass"><code>dataclass</code></small>
|
|
</span>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
|
|
<p>Dataclass implementing a prettymaps Plot object.</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Attributes:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td><code><span title="prettymaps.draw.Plot.geodataframes">geodataframes</span></code></td>
|
|
<td>
|
|
<code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="geopandas.GeoDataFrame">GeoDataFrame</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>A dictionary of GeoDataFrames (one for each plot layer).</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td><code><span title="prettymaps.draw.Plot.fig">fig</span></code></td>
|
|
<td>
|
|
<code><span title="matplotlib.figure.Figure">Figure</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>A matplotlib figure.</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td><code><span title="prettymaps.draw.Plot.ax">ax</span></code></td>
|
|
<td>
|
|
<code><span title="matplotlib.axes.Axes">Axes</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>A matplotlib axis object.</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td><code><span title="prettymaps.draw.Plot.background">background</span></code></td>
|
|
<td>
|
|
<code><span title="shapely.geometry.base.BaseGeometry">BaseGeometry</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Background layer (shapely object).</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td><code><span title="prettymaps.draw.Plot.keypoints">keypoints</span></code></td>
|
|
<td>
|
|
<code><span title="geopandas.GeoDataFrame">GeoDataFrame</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Keypoints GeoDataFrame.</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 83</span>
|
|
<span class="normal"> 84</span>
|
|
<span class="normal"> 85</span>
|
|
<span class="normal"> 86</span>
|
|
<span class="normal"> 87</span>
|
|
<span class="normal"> 88</span>
|
|
<span class="normal"> 89</span>
|
|
<span class="normal"> 90</span>
|
|
<span class="normal"> 91</span>
|
|
<span class="normal"> 92</span>
|
|
<span class="normal"> 93</span>
|
|
<span class="normal"> 94</span>
|
|
<span class="normal"> 95</span>
|
|
<span class="normal"> 96</span>
|
|
<span class="normal"> 97</span>
|
|
<span class="normal"> 98</span>
|
|
<span class="normal"> 99</span>
|
|
<span class="normal">100</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="nd">@dataclass</span>
|
|
<span class="k">class</span><span class="w"> </span><span class="nc">Plot</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Dataclass implementing a prettymaps Plot object.</span>
|
|
|
|
<span class="sd"> Attributes:</span>
|
|
<span class="sd"> geodataframes (Dict[str, gp.GeoDataFrame]): A dictionary of GeoDataFrames (one for each plot layer).</span>
|
|
<span class="sd"> fig (matplotlib.figure.Figure): A matplotlib figure.</span>
|
|
<span class="sd"> ax (matplotlib.axes.Axes): A matplotlib axis object.</span>
|
|
<span class="sd"> background (BaseGeometry): Background layer (shapely object).</span>
|
|
<span class="sd"> keypoints (gp.GeoDataFrame): Keypoints GeoDataFrame.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">geodataframes</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">gp</span><span class="o">.</span><span class="n">GeoDataFrame</span><span class="p">]</span>
|
|
<span class="n">fig</span><span class="p">:</span> <span class="n">matplotlib</span><span class="o">.</span><span class="n">figure</span><span class="o">.</span><span class="n">Figure</span>
|
|
<span class="n">ax</span><span class="p">:</span> <span class="n">matplotlib</span><span class="o">.</span><span class="n">axes</span><span class="o">.</span><span class="n">Axes</span>
|
|
<span class="n">background</span><span class="p">:</span> <span class="n">BaseGeometry</span>
|
|
<span class="n">keypoints</span><span class="p">:</span> <span class="n">gp</span><span class="o">.</span><span class="n">GeoDataFrame</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="prettymaps.draw.PolygonPatch" class="doc doc-heading">
|
|
<code>PolygonPatch</code>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
<p class="doc doc-class-bases">
|
|
Bases: <code><span title="matplotlib.patches.PathPatch">PathPatch</span></code></p>
|
|
|
|
|
|
<p>A class to create a matplotlib PathPatch from a shapely geometry.</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Attributes:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td><code><span title="prettymaps.draw.PolygonPatch.shape">shape</span></code></td>
|
|
<td>
|
|
<code><span title="shapely.geometry.base.BaseGeometry">BaseGeometry</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Shapely geometry.</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td><code><span title="prettymaps.draw.PolygonPatch.kwargs">kwargs</span></code></td>
|
|
<td>
|
|
<code><span title="shapely.geometry.base.BaseGeometry">BaseGeometry</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Parameters for matplotlib's PathPatch constructor.</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<p><span class="doc-section-title">Methods:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td><code><a class="autorefs autorefs-internal" title="__init__(shape, **kwargs) (prettymaps.draw.PolygonPatch.__init__)" href="#prettymaps.draw.PolygonPatch.__init__">__init__</a></code></td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>BaseGeometry, **kwargs):
|
|
Initialize the PolygonPatch with the given shapely geometry and additional parameters.</p>
|
|
<p>shape (BaseGeometry): Shapely geometry.
|
|
kwargs: Parameters for matplotlib's PathPatch constructor.</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">115</span>
|
|
<span class="normal">116</span>
|
|
<span class="normal">117</span>
|
|
<span class="normal">118</span>
|
|
<span class="normal">119</span>
|
|
<span class="normal">120</span>
|
|
<span class="normal">121</span>
|
|
<span class="normal">122</span>
|
|
<span class="normal">123</span>
|
|
<span class="normal">124</span>
|
|
<span class="normal">125</span>
|
|
<span class="normal">126</span>
|
|
<span class="normal">127</span>
|
|
<span class="normal">128</span>
|
|
<span class="normal">129</span>
|
|
<span class="normal">130</span>
|
|
<span class="normal">131</span>
|
|
<span class="normal">132</span>
|
|
<span class="normal">133</span>
|
|
<span class="normal">134</span>
|
|
<span class="normal">135</span>
|
|
<span class="normal">136</span>
|
|
<span class="normal">137</span>
|
|
<span class="normal">138</span>
|
|
<span class="normal">139</span>
|
|
<span class="normal">140</span>
|
|
<span class="normal">141</span>
|
|
<span class="normal">142</span>
|
|
<span class="normal">143</span>
|
|
<span class="normal">144</span>
|
|
<span class="normal">145</span>
|
|
<span class="normal">146</span>
|
|
<span class="normal">147</span>
|
|
<span class="normal">148</span>
|
|
<span class="normal">149</span>
|
|
<span class="normal">150</span>
|
|
<span class="normal">151</span>
|
|
<span class="normal">152</span>
|
|
<span class="normal">153</span>
|
|
<span class="normal">154</span>
|
|
<span class="normal">155</span>
|
|
<span class="normal">156</span>
|
|
<span class="normal">157</span>
|
|
<span class="normal">158</span>
|
|
<span class="normal">159</span>
|
|
<span class="normal">160</span>
|
|
<span class="normal">161</span>
|
|
<span class="normal">162</span>
|
|
<span class="normal">163</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">PolygonPatch</span><span class="p">(</span><span class="n">PathPatch</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> A class to create a matplotlib PathPatch from a shapely geometry.</span>
|
|
|
|
<span class="sd"> Attributes:</span>
|
|
<span class="sd"> shape (BaseGeometry): Shapely geometry.</span>
|
|
<span class="sd"> kwargs: Parameters for matplotlib's PathPatch constructor.</span>
|
|
|
|
<span class="sd"> Methods:</span>
|
|
<span class="sd"> __init__(shape: BaseGeometry, **kwargs):</span>
|
|
<span class="sd"> Initialize the PolygonPatch with the given shapely geometry and additional parameters.</span>
|
|
|
|
|
|
<span class="sd"> shape (BaseGeometry): Shapely geometry.</span>
|
|
<span class="sd"> kwargs: Parameters for matplotlib's PathPatch constructor.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">shape</span><span class="p">:</span> <span class="n">BaseGeometry</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Initialize the PolygonPatch.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> shape (BaseGeometry): Shapely geometry</span>
|
|
<span class="sd"> kwargs: parameters for matplotlib's PathPatch constructor</span>
|
|
<span class="sd"> """</span>
|
|
<span class="c1"># Init vertices and codes lists</span>
|
|
<span class="n">vertices</span><span class="p">,</span> <span class="n">codes</span> <span class="o">=</span> <span class="p">[],</span> <span class="p">[]</span>
|
|
<span class="k">for</span> <span class="n">geom</span> <span class="ow">in</span> <span class="n">shape</span><span class="o">.</span><span class="n">geoms</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">shape</span><span class="p">,</span> <span class="s2">"geoms"</span><span class="p">)</span> <span class="k">else</span> <span class="p">[</span><span class="n">shape</span><span class="p">]:</span>
|
|
<span class="k">for</span> <span class="n">poly</span> <span class="ow">in</span> <span class="n">geom</span><span class="o">.</span><span class="n">geoms</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">geom</span><span class="p">,</span> <span class="s2">"geoms"</span><span class="p">)</span> <span class="k">else</span> <span class="p">[</span><span class="n">geom</span><span class="p">]:</span>
|
|
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">poly</span><span class="p">)</span> <span class="o">!=</span> <span class="n">Polygon</span><span class="p">:</span>
|
|
<span class="k">continue</span>
|
|
<span class="c1"># Get polygon's exterior and interiors</span>
|
|
<span class="n">exterior</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">poly</span><span class="o">.</span><span class="n">exterior</span><span class="o">.</span><span class="n">xy</span><span class="p">)</span>
|
|
<span class="n">interiors</span> <span class="o">=</span> <span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">interior</span><span class="o">.</span><span class="n">xy</span><span class="p">)</span> <span class="k">for</span> <span class="n">interior</span> <span class="ow">in</span> <span class="n">poly</span><span class="o">.</span><span class="n">interiors</span><span class="p">]</span>
|
|
<span class="c1"># Append to vertices and codes lists</span>
|
|
<span class="n">vertices</span> <span class="o">+=</span> <span class="p">[</span><span class="n">exterior</span><span class="p">]</span> <span class="o">+</span> <span class="n">interiors</span>
|
|
<span class="n">codes</span> <span class="o">+=</span> <span class="nb">list</span><span class="p">(</span>
|
|
<span class="nb">map</span><span class="p">(</span>
|
|
<span class="c1"># Ring coding</span>
|
|
<span class="k">lambda</span> <span class="n">p</span><span class="p">:</span> <span class="p">[</span><span class="n">Path</span><span class="o">.</span><span class="n">MOVETO</span><span class="p">]</span>
|
|
<span class="o">+</span> <span class="p">[</span><span class="n">Path</span><span class="o">.</span><span class="n">LINETO</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span>
|
|
<span class="o">+</span> <span class="p">[</span><span class="n">Path</span><span class="o">.</span><span class="n">CLOSEPOLY</span><span class="p">],</span>
|
|
<span class="p">[</span><span class="n">exterior</span><span class="p">]</span> <span class="o">+</span> <span class="n">interiors</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="c1"># Initialize PathPatch with the generated Path</span>
|
|
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span>
|
|
<span class="n">Path</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">(</span><span class="n">vertices</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">T</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">(</span><span class="n">codes</span><span class="p">)),</span> <span class="o">**</span><span class="n">kwargs</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h4 id="prettymaps.draw.PolygonPatch.__init__" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="n">shape</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
|
|
|
|
</h4>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Initialize the PolygonPatch.</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>shape</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="shapely.geometry.base.BaseGeometry">BaseGeometry</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Shapely geometry</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>kwargs</code>
|
|
</td>
|
|
<td>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>parameters for matplotlib's PathPatch constructor</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>{}</code>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">132</span>
|
|
<span class="normal">133</span>
|
|
<span class="normal">134</span>
|
|
<span class="normal">135</span>
|
|
<span class="normal">136</span>
|
|
<span class="normal">137</span>
|
|
<span class="normal">138</span>
|
|
<span class="normal">139</span>
|
|
<span class="normal">140</span>
|
|
<span class="normal">141</span>
|
|
<span class="normal">142</span>
|
|
<span class="normal">143</span>
|
|
<span class="normal">144</span>
|
|
<span class="normal">145</span>
|
|
<span class="normal">146</span>
|
|
<span class="normal">147</span>
|
|
<span class="normal">148</span>
|
|
<span class="normal">149</span>
|
|
<span class="normal">150</span>
|
|
<span class="normal">151</span>
|
|
<span class="normal">152</span>
|
|
<span class="normal">153</span>
|
|
<span class="normal">154</span>
|
|
<span class="normal">155</span>
|
|
<span class="normal">156</span>
|
|
<span class="normal">157</span>
|
|
<span class="normal">158</span>
|
|
<span class="normal">159</span>
|
|
<span class="normal">160</span>
|
|
<span class="normal">161</span>
|
|
<span class="normal">162</span>
|
|
<span class="normal">163</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">shape</span><span class="p">:</span> <span class="n">BaseGeometry</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Initialize the PolygonPatch.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> shape (BaseGeometry): Shapely geometry</span>
|
|
<span class="sd"> kwargs: parameters for matplotlib's PathPatch constructor</span>
|
|
<span class="sd"> """</span>
|
|
<span class="c1"># Init vertices and codes lists</span>
|
|
<span class="n">vertices</span><span class="p">,</span> <span class="n">codes</span> <span class="o">=</span> <span class="p">[],</span> <span class="p">[]</span>
|
|
<span class="k">for</span> <span class="n">geom</span> <span class="ow">in</span> <span class="n">shape</span><span class="o">.</span><span class="n">geoms</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">shape</span><span class="p">,</span> <span class="s2">"geoms"</span><span class="p">)</span> <span class="k">else</span> <span class="p">[</span><span class="n">shape</span><span class="p">]:</span>
|
|
<span class="k">for</span> <span class="n">poly</span> <span class="ow">in</span> <span class="n">geom</span><span class="o">.</span><span class="n">geoms</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">geom</span><span class="p">,</span> <span class="s2">"geoms"</span><span class="p">)</span> <span class="k">else</span> <span class="p">[</span><span class="n">geom</span><span class="p">]:</span>
|
|
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">poly</span><span class="p">)</span> <span class="o">!=</span> <span class="n">Polygon</span><span class="p">:</span>
|
|
<span class="k">continue</span>
|
|
<span class="c1"># Get polygon's exterior and interiors</span>
|
|
<span class="n">exterior</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">poly</span><span class="o">.</span><span class="n">exterior</span><span class="o">.</span><span class="n">xy</span><span class="p">)</span>
|
|
<span class="n">interiors</span> <span class="o">=</span> <span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">interior</span><span class="o">.</span><span class="n">xy</span><span class="p">)</span> <span class="k">for</span> <span class="n">interior</span> <span class="ow">in</span> <span class="n">poly</span><span class="o">.</span><span class="n">interiors</span><span class="p">]</span>
|
|
<span class="c1"># Append to vertices and codes lists</span>
|
|
<span class="n">vertices</span> <span class="o">+=</span> <span class="p">[</span><span class="n">exterior</span><span class="p">]</span> <span class="o">+</span> <span class="n">interiors</span>
|
|
<span class="n">codes</span> <span class="o">+=</span> <span class="nb">list</span><span class="p">(</span>
|
|
<span class="nb">map</span><span class="p">(</span>
|
|
<span class="c1"># Ring coding</span>
|
|
<span class="k">lambda</span> <span class="n">p</span><span class="p">:</span> <span class="p">[</span><span class="n">Path</span><span class="o">.</span><span class="n">MOVETO</span><span class="p">]</span>
|
|
<span class="o">+</span> <span class="p">[</span><span class="n">Path</span><span class="o">.</span><span class="n">LINETO</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span>
|
|
<span class="o">+</span> <span class="p">[</span><span class="n">Path</span><span class="o">.</span><span class="n">CLOSEPOLY</span><span class="p">],</span>
|
|
<span class="p">[</span><span class="n">exterior</span><span class="p">]</span> <span class="o">+</span> <span class="n">interiors</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="c1"># Initialize PathPatch with the generated Path</span>
|
|
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span>
|
|
<span class="n">Path</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">(</span><span class="n">vertices</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">T</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">(</span><span class="n">codes</span><span class="p">)),</span> <span class="o">**</span><span class="n">kwargs</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="prettymaps.draw.Preset" class="doc doc-heading">
|
|
<code>Preset</code>
|
|
|
|
|
|
<span class="doc doc-labels">
|
|
<small class="doc doc-label doc-label-dataclass"><code>dataclass</code></small>
|
|
</span>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
|
|
<p>Dataclass implementing a prettymaps Preset object.</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Attributes:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td><code><span title="prettymaps.draw.Preset.params">params</span></code></td>
|
|
<td>
|
|
<code><span title="dict">dict</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Dictionary of prettymaps.plot() parameters.</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">103</span>
|
|
<span class="normal">104</span>
|
|
<span class="normal">105</span>
|
|
<span class="normal">106</span>
|
|
<span class="normal">107</span>
|
|
<span class="normal">108</span>
|
|
<span class="normal">109</span>
|
|
<span class="normal">110</span>
|
|
<span class="normal">111</span>
|
|
<span class="normal">112</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="nd">@dataclass</span>
|
|
<span class="k">class</span><span class="w"> </span><span class="nc">Preset</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Dataclass implementing a prettymaps Preset object.</span>
|
|
|
|
<span class="sd"> Attributes:</span>
|
|
<span class="sd"> params (dict): Dictionary of prettymaps.plot() parameters.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">params</span><span class="p">:</span> <span class="nb">dict</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-class">
|
|
|
|
|
|
|
|
<h3 id="prettymaps.draw.Subplot" class="doc doc-heading">
|
|
<code>Subplot</code>
|
|
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
|
|
<p>Class implementing a prettymaps Subplot. Attributes:
|
|
- query: prettymaps.plot() query
|
|
- kwargs: dictionary of prettymaps.plot() parameters</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">71</span>
|
|
<span class="normal">72</span>
|
|
<span class="normal">73</span>
|
|
<span class="normal">74</span>
|
|
<span class="normal">75</span>
|
|
<span class="normal">76</span>
|
|
<span class="normal">77</span>
|
|
<span class="normal">78</span>
|
|
<span class="normal">79</span>
|
|
<span class="normal">80</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">Subplot</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Class implementing a prettymaps Subplot. Attributes:</span>
|
|
<span class="sd"> - query: prettymaps.plot() query</span>
|
|
<span class="sd"> - kwargs: dictionary of prettymaps.plot() parameters</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">query</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">query</span> <span class="o">=</span> <span class="n">query</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">kwargs</span> <span class="o">=</span> <span class="n">kwargs</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.draw.create_background" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">create_background</span><span class="p">(</span><span class="n">gdfs</span><span class="p">,</span> <span class="n">style</span><span class="p">,</span> <span class="n">logging</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Create a background layer given a collection of GeoDataFrames</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>gdfs</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="geopandas.GeoDataFrame">GeoDataFrame</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Dictionary of GeoDataFrames</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>style</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="dict">dict</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Dictionary of matplotlib style parameters</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code><span title="typing.Tuple">Tuple</span>[<span title="shapely.geometry.base.BaseGeometry">BaseGeometry</span>, <span title="float">float</span>, <span title="float">float</span>, <span title="float">float</span>, <span title="float">float</span>, <span title="float">float</span>, <span title="float">float</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Tuple[BaseGeometry, float, float, float, float, float, float]: background geometry, bounds, width and height</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">580</span>
|
|
<span class="normal">581</span>
|
|
<span class="normal">582</span>
|
|
<span class="normal">583</span>
|
|
<span class="normal">584</span>
|
|
<span class="normal">585</span>
|
|
<span class="normal">586</span>
|
|
<span class="normal">587</span>
|
|
<span class="normal">588</span>
|
|
<span class="normal">589</span>
|
|
<span class="normal">590</span>
|
|
<span class="normal">591</span>
|
|
<span class="normal">592</span>
|
|
<span class="normal">593</span>
|
|
<span class="normal">594</span>
|
|
<span class="normal">595</span>
|
|
<span class="normal">596</span>
|
|
<span class="normal">597</span>
|
|
<span class="normal">598</span>
|
|
<span class="normal">599</span>
|
|
<span class="normal">600</span>
|
|
<span class="normal">601</span>
|
|
<span class="normal">602</span>
|
|
<span class="normal">603</span>
|
|
<span class="normal">604</span>
|
|
<span class="normal">605</span>
|
|
<span class="normal">606</span>
|
|
<span class="normal">607</span>
|
|
<span class="normal">608</span>
|
|
<span class="normal">609</span>
|
|
<span class="normal">610</span>
|
|
<span class="normal">611</span>
|
|
<span class="normal">612</span>
|
|
<span class="normal">613</span>
|
|
<span class="normal">614</span>
|
|
<span class="normal">615</span>
|
|
<span class="normal">616</span>
|
|
<span class="normal">617</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="nd">@log_execution_time</span>
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">create_background</span><span class="p">(</span>
|
|
<span class="n">gdfs</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">gp</span><span class="o">.</span><span class="n">GeoDataFrame</span><span class="p">],</span>
|
|
<span class="n">style</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">dict</span><span class="p">],</span>
|
|
<span class="n">logging</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">Tuple</span><span class="p">[</span><span class="n">BaseGeometry</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">float</span><span class="p">]:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Create a background layer given a collection of GeoDataFrames</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> gdfs (Dict[str, gp.GeoDataFrame]): Dictionary of GeoDataFrames</span>
|
|
<span class="sd"> style (Dict[str, dict]): Dictionary of matplotlib style parameters</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> Tuple[BaseGeometry, float, float, float, float, float, float]: background geometry, bounds, width and height</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="c1"># Create background</span>
|
|
<span class="n">background_pad</span> <span class="o">=</span> <span class="mf">1.1</span>
|
|
<span class="k">if</span> <span class="s2">"background"</span> <span class="ow">in</span> <span class="n">style</span> <span class="ow">and</span> <span class="s2">"pad"</span> <span class="ow">in</span> <span class="n">style</span><span class="p">[</span><span class="s2">"background"</span><span class="p">]:</span>
|
|
<span class="n">background_pad</span> <span class="o">=</span> <span class="n">style</span><span class="p">[</span><span class="s2">"background"</span><span class="p">]</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"pad"</span><span class="p">)</span>
|
|
|
|
<span class="n">background</span> <span class="o">=</span> <span class="n">shapely</span><span class="o">.</span><span class="n">affinity</span><span class="o">.</span><span class="n">scale</span><span class="p">(</span>
|
|
<span class="n">box</span><span class="p">(</span>
|
|
<span class="o">*</span><span class="n">shapely</span><span class="o">.</span><span class="n">ops</span><span class="o">.</span><span class="n">unary_union</span><span class="p">(</span><span class="n">ox</span><span class="o">.</span><span class="n">projection</span><span class="o">.</span><span class="n">project_gdf</span><span class="p">(</span><span class="n">gdfs</span><span class="p">[</span><span class="s2">"perimeter"</span><span class="p">])</span><span class="o">.</span><span class="n">geometry</span><span class="p">)</span><span class="o">.</span><span class="n">bounds</span>
|
|
<span class="p">),</span>
|
|
<span class="n">background_pad</span><span class="p">,</span>
|
|
<span class="n">background_pad</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="s2">"background"</span> <span class="ow">in</span> <span class="n">style</span> <span class="ow">and</span> <span class="s2">"dilate"</span> <span class="ow">in</span> <span class="n">style</span><span class="p">[</span><span class="s2">"background"</span><span class="p">]:</span>
|
|
<span class="n">background</span> <span class="o">=</span> <span class="n">background</span><span class="o">.</span><span class="n">buffer</span><span class="p">(</span><span class="n">style</span><span class="p">[</span><span class="s2">"background"</span><span class="p">]</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"dilate"</span><span class="p">))</span>
|
|
|
|
<span class="c1"># Get bounds</span>
|
|
<span class="n">xmin</span><span class="p">,</span> <span class="n">ymin</span><span class="p">,</span> <span class="n">xmax</span><span class="p">,</span> <span class="n">ymax</span> <span class="o">=</span> <span class="n">background</span><span class="o">.</span><span class="n">bounds</span>
|
|
<span class="n">dx</span><span class="p">,</span> <span class="n">dy</span> <span class="o">=</span> <span class="n">xmax</span> <span class="o">-</span> <span class="n">xmin</span><span class="p">,</span> <span class="n">ymax</span> <span class="o">-</span> <span class="n">ymin</span>
|
|
|
|
<span class="k">return</span> <span class="n">background</span><span class="p">,</span> <span class="n">xmin</span><span class="p">,</span> <span class="n">ymin</span><span class="p">,</span> <span class="n">xmax</span><span class="p">,</span> <span class="n">ymax</span><span class="p">,</span> <span class="n">dx</span><span class="p">,</span> <span class="n">dy</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.draw.create_preset" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">create_preset</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">layers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">style</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">circle</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">radius</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dilate</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Create a preset file and save it on the presets folder (prettymaps/presets/) under name 'name.json'</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>name</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="str">str</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Preset name</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>layers</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="dict">dict</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>prettymaps.plot() 'layers' parameter dict. Defaults to None.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>style</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="dict">dict</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>prettymaps.plot() 'style' parameter dict. Defaults to None.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>circle</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Optional">Optional</span>[<span title="bool">bool</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>prettymaps.plot() 'circle' parameter. Defaults to None.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>radius</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Optional">Optional</span>[<span title="typing.Union">Union</span>[<span title="float">float</span>, <span title="bool">bool</span>]]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>prettymaps.plot() 'radius' parameter. Defaults to None.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>dilate</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Optional">Optional</span>[<span title="typing.Union">Union</span>[<span title="float">float</span>, <span title="bool">bool</span>]]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>prettymaps.plot() 'dilate' parameter. Defaults to None.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">710</span>
|
|
<span class="normal">711</span>
|
|
<span class="normal">712</span>
|
|
<span class="normal">713</span>
|
|
<span class="normal">714</span>
|
|
<span class="normal">715</span>
|
|
<span class="normal">716</span>
|
|
<span class="normal">717</span>
|
|
<span class="normal">718</span>
|
|
<span class="normal">719</span>
|
|
<span class="normal">720</span>
|
|
<span class="normal">721</span>
|
|
<span class="normal">722</span>
|
|
<span class="normal">723</span>
|
|
<span class="normal">724</span>
|
|
<span class="normal">725</span>
|
|
<span class="normal">726</span>
|
|
<span class="normal">727</span>
|
|
<span class="normal">728</span>
|
|
<span class="normal">729</span>
|
|
<span class="normal">730</span>
|
|
<span class="normal">731</span>
|
|
<span class="normal">732</span>
|
|
<span class="normal">733</span>
|
|
<span class="normal">734</span>
|
|
<span class="normal">735</span>
|
|
<span class="normal">736</span>
|
|
<span class="normal">737</span>
|
|
<span class="normal">738</span>
|
|
<span class="normal">739</span>
|
|
<span class="normal">740</span>
|
|
<span class="normal">741</span>
|
|
<span class="normal">742</span>
|
|
<span class="normal">743</span>
|
|
<span class="normal">744</span>
|
|
<span class="normal">745</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">create_preset</span><span class="p">(</span>
|
|
<span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">layers</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">dict</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">style</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">dict</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">circle</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">radius</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">float</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">dilate</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">float</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Create a preset file and save it on the presets folder (prettymaps/presets/) under name 'name.json'</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> name (str): Preset name</span>
|
|
<span class="sd"> layers (Dict[str, dict], optional): prettymaps.plot() 'layers' parameter dict. Defaults to None.</span>
|
|
<span class="sd"> style (Dict[str, dict], optional): prettymaps.plot() 'style' parameter dict. Defaults to None.</span>
|
|
<span class="sd"> circle (Optional[bool], optional): prettymaps.plot() 'circle' parameter. Defaults to None.</span>
|
|
<span class="sd"> radius (Optional[Union[float, bool]], optional): prettymaps.plot() 'radius' parameter. Defaults to None.</span>
|
|
<span class="sd"> dilate (Optional[Union[float, bool]], optional): prettymaps.plot() 'dilate' parameter. Defaults to None.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="c1"># if not os.path.isdir('presets'):</span>
|
|
<span class="c1"># os.makedirs('presets')</span>
|
|
|
|
<span class="n">path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">presets_directory</span><span class="p">(),</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">.json"</span><span class="p">)</span>
|
|
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s2">"w"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
|
<span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span>
|
|
<span class="p">{</span>
|
|
<span class="s2">"layers"</span><span class="p">:</span> <span class="n">layers</span><span class="p">,</span>
|
|
<span class="s2">"style"</span><span class="p">:</span> <span class="n">style</span><span class="p">,</span>
|
|
<span class="s2">"circle"</span><span class="p">:</span> <span class="n">circle</span><span class="p">,</span>
|
|
<span class="s2">"radius"</span><span class="p">:</span> <span class="n">radius</span><span class="p">,</span>
|
|
<span class="s2">"dilate"</span><span class="p">:</span> <span class="n">dilate</span><span class="p">,</span>
|
|
<span class="p">},</span>
|
|
<span class="n">f</span><span class="p">,</span>
|
|
<span class="n">ensure_ascii</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.draw.draw_credit" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">draw_credit</span><span class="p">(</span><span class="n">ax</span><span class="p">,</span> <span class="n">background</span><span class="p">,</span> <span class="n">credit</span><span class="p">,</span> <span class="n">mode</span><span class="p">,</span> <span class="n">multiplot</span><span class="p">,</span> <span class="n">logging</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Draws credit text on the plot.</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>ax</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="matplotlib.axes.Axes">Axes</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Matplotlib axis object.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>background</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="shapely.geometry.base.BaseGeometry">BaseGeometry</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Background layer.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>credit</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="typing.Any">Any</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Dictionary containing credit text and style parameters.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>mode</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="str">str</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Drawing mode. Options: 'matplotlib', 'plotter'.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>multiplot</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="bool">bool</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Whether the plot is part of a multiplot.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>logging</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="bool">bool</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Whether to enable logging. Defaults to False.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>False</code>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">946</span>
|
|
<span class="normal">947</span>
|
|
<span class="normal">948</span>
|
|
<span class="normal">949</span>
|
|
<span class="normal">950</span>
|
|
<span class="normal">951</span>
|
|
<span class="normal">952</span>
|
|
<span class="normal">953</span>
|
|
<span class="normal">954</span>
|
|
<span class="normal">955</span>
|
|
<span class="normal">956</span>
|
|
<span class="normal">957</span>
|
|
<span class="normal">958</span>
|
|
<span class="normal">959</span>
|
|
<span class="normal">960</span>
|
|
<span class="normal">961</span>
|
|
<span class="normal">962</span>
|
|
<span class="normal">963</span>
|
|
<span class="normal">964</span>
|
|
<span class="normal">965</span>
|
|
<span class="normal">966</span>
|
|
<span class="normal">967</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="nd">@log_execution_time</span>
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">draw_credit</span><span class="p">(</span>
|
|
<span class="n">ax</span><span class="p">:</span> <span class="n">matplotlib</span><span class="o">.</span><span class="n">axes</span><span class="o">.</span><span class="n">Axes</span><span class="p">,</span>
|
|
<span class="n">background</span><span class="p">:</span> <span class="n">BaseGeometry</span><span class="p">,</span>
|
|
<span class="n">credit</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span>
|
|
<span class="n">mode</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">multiplot</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
|
|
<span class="n">logging</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Draws credit text on the plot.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> ax (matplotlib.axes.Axes): Matplotlib axis object.</span>
|
|
<span class="sd"> background (BaseGeometry): Background layer.</span>
|
|
<span class="sd"> credit (Dict[str, Any]): Dictionary containing credit text and style parameters.</span>
|
|
<span class="sd"> mode (str): Drawing mode. Options: 'matplotlib', 'plotter'.</span>
|
|
<span class="sd"> multiplot (bool): Whether the plot is part of a multiplot.</span>
|
|
<span class="sd"> logging (bool, optional): Whether to enable logging. Defaults to False.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">if</span> <span class="p">(</span><span class="n">mode</span> <span class="o">==</span> <span class="s2">"matplotlib"</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n">credit</span> <span class="o">!=</span> <span class="kc">False</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="n">multiplot</span><span class="p">):</span>
|
|
<span class="n">draw_text</span><span class="p">(</span><span class="n">ax</span><span class="p">,</span> <span class="n">credit</span><span class="p">,</span> <span class="n">background</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.draw.draw_text" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">draw_text</span><span class="p">(</span><span class="n">ax</span><span class="p">,</span> <span class="n">params</span><span class="p">,</span> <span class="n">background</span><span class="p">)</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Draw text with content and matplotlib style parameters specified by 'params' dictionary.
|
|
params['text'] should contain the message to be drawn.</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>ax</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="matplotlib.axes.Axes">Axes</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Matplotlib axis object.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>params</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="typing.Any">Any</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Matplotlib style parameters for drawing text. params['text'] should contain the message to be drawn.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>background</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="shapely.geometry.base.BaseGeometry">BaseGeometry</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Background layer.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">905</span>
|
|
<span class="normal">906</span>
|
|
<span class="normal">907</span>
|
|
<span class="normal">908</span>
|
|
<span class="normal">909</span>
|
|
<span class="normal">910</span>
|
|
<span class="normal">911</span>
|
|
<span class="normal">912</span>
|
|
<span class="normal">913</span>
|
|
<span class="normal">914</span>
|
|
<span class="normal">915</span>
|
|
<span class="normal">916</span>
|
|
<span class="normal">917</span>
|
|
<span class="normal">918</span>
|
|
<span class="normal">919</span>
|
|
<span class="normal">920</span>
|
|
<span class="normal">921</span>
|
|
<span class="normal">922</span>
|
|
<span class="normal">923</span>
|
|
<span class="normal">924</span>
|
|
<span class="normal">925</span>
|
|
<span class="normal">926</span>
|
|
<span class="normal">927</span>
|
|
<span class="normal">928</span>
|
|
<span class="normal">929</span>
|
|
<span class="normal">930</span>
|
|
<span class="normal">931</span>
|
|
<span class="normal">932</span>
|
|
<span class="normal">933</span>
|
|
<span class="normal">934</span>
|
|
<span class="normal">935</span>
|
|
<span class="normal">936</span>
|
|
<span class="normal">937</span>
|
|
<span class="normal">938</span>
|
|
<span class="normal">939</span>
|
|
<span class="normal">940</span>
|
|
<span class="normal">941</span>
|
|
<span class="normal">942</span>
|
|
<span class="normal">943</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">draw_text</span><span class="p">(</span>
|
|
<span class="n">ax</span><span class="p">:</span> <span class="n">matplotlib</span><span class="o">.</span><span class="n">axes</span><span class="o">.</span><span class="n">Axes</span><span class="p">,</span> <span class="n">params</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span> <span class="n">background</span><span class="p">:</span> <span class="n">BaseGeometry</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Draw text with content and matplotlib style parameters specified by 'params' dictionary.</span>
|
|
<span class="sd"> params['text'] should contain the message to be drawn.</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> ax (matplotlib.axes.Axes): Matplotlib axis object.</span>
|
|
<span class="sd"> params (Dict[str, Any]): Matplotlib style parameters for drawing text. params['text'] should contain the message to be drawn.</span>
|
|
<span class="sd"> background (BaseGeometry): Background layer.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="c1"># Override default osm_credit dict with provided parameters</span>
|
|
<span class="n">params</span> <span class="o">=</span> <span class="n">override_params</span><span class="p">(</span>
|
|
<span class="nb">dict</span><span class="p">(</span>
|
|
<span class="n">text</span><span class="o">=</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span>
|
|
<span class="p">[</span>
|
|
<span class="s2">"data © OpenStreetMap contributors"</span><span class="p">,</span>
|
|
<span class="s2">"github.com/marceloprates/prettymaps"</span><span class="p">,</span>
|
|
<span class="p">]</span>
|
|
<span class="p">),</span>
|
|
<span class="n">x</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
|
|
<span class="n">y</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
|
|
<span class="n">horizontalalignment</span><span class="o">=</span><span class="s2">"left"</span><span class="p">,</span>
|
|
<span class="n">verticalalignment</span><span class="o">=</span><span class="s2">"top"</span><span class="p">,</span>
|
|
<span class="n">bbox</span><span class="o">=</span><span class="nb">dict</span><span class="p">(</span><span class="n">boxstyle</span><span class="o">=</span><span class="s2">"square"</span><span class="p">,</span> <span class="n">fc</span><span class="o">=</span><span class="s2">"#fff"</span><span class="p">,</span> <span class="n">ec</span><span class="o">=</span><span class="s2">"#000"</span><span class="p">),</span>
|
|
<span class="c1"># fontfamily="Ubuntu Mono",</span>
|
|
<span class="p">),</span>
|
|
<span class="n">params</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span> <span class="p">[</span><span class="n">params</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">k</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"x"</span><span class="p">,</span> <span class="s2">"y"</span><span class="p">,</span> <span class="s2">"text"</span><span class="p">]]</span>
|
|
|
|
<span class="c1"># Get background bounds</span>
|
|
<span class="n">xmin</span><span class="p">,</span> <span class="n">ymin</span><span class="p">,</span> <span class="n">xmax</span><span class="p">,</span> <span class="n">ymax</span> <span class="o">=</span> <span class="n">background</span><span class="o">.</span><span class="n">bounds</span>
|
|
|
|
<span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">interp</span><span class="p">([</span><span class="n">x</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="n">xmin</span><span class="p">,</span> <span class="n">xmax</span><span class="p">])[</span><span class="mi">0</span><span class="p">]</span>
|
|
<span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">interp</span><span class="p">([</span><span class="n">y</span><span class="p">],</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="n">ymin</span><span class="p">,</span> <span class="n">ymax</span><span class="p">])[</span><span class="mi">0</span><span class="p">]</span>
|
|
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">zorder</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="o">**</span><span class="n">params</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.draw.gdf_to_shapely" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">gdf_to_shapely</span><span class="p">(</span><span class="n">layer</span><span class="p">,</span> <span class="n">gdf</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">point_size</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">line_width</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Convert a dict of GeoDataFrames to a dict of shapely geometries</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>layer</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="str">str</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Layer name</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>gdf</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="geopandas.GeoDataFrame">GeoDataFrame</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Input GeoDataFrame</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>width</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Optional">Optional</span>[<span title="typing.Union">Union</span>[<span title="dict">dict</span>, <span title="float">float</span>]]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Street network width. Can be either a dictionary or a float. Defaults to None.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>point_size</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Optional">Optional</span>[<span title="float">float</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Point geometries (1D) will be dilated by this amount. Defaults to None.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>line_width</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Optional">Optional</span>[<span title="float">float</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Line geometries (2D) will be dilated by this amount. Defaults to None.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th> <th>Type</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td><code>GeometryCollection</code></td> <td>
|
|
<code><span title="shapely.geometry.GeometryCollection">GeometryCollection</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Output GeoDataFrame</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">256</span>
|
|
<span class="normal">257</span>
|
|
<span class="normal">258</span>
|
|
<span class="normal">259</span>
|
|
<span class="normal">260</span>
|
|
<span class="normal">261</span>
|
|
<span class="normal">262</span>
|
|
<span class="normal">263</span>
|
|
<span class="normal">264</span>
|
|
<span class="normal">265</span>
|
|
<span class="normal">266</span>
|
|
<span class="normal">267</span>
|
|
<span class="normal">268</span>
|
|
<span class="normal">269</span>
|
|
<span class="normal">270</span>
|
|
<span class="normal">271</span>
|
|
<span class="normal">272</span>
|
|
<span class="normal">273</span>
|
|
<span class="normal">274</span>
|
|
<span class="normal">275</span>
|
|
<span class="normal">276</span>
|
|
<span class="normal">277</span>
|
|
<span class="normal">278</span>
|
|
<span class="normal">279</span>
|
|
<span class="normal">280</span>
|
|
<span class="normal">281</span>
|
|
<span class="normal">282</span>
|
|
<span class="normal">283</span>
|
|
<span class="normal">284</span>
|
|
<span class="normal">285</span>
|
|
<span class="normal">286</span>
|
|
<span class="normal">287</span>
|
|
<span class="normal">288</span>
|
|
<span class="normal">289</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">gdf_to_shapely</span><span class="p">(</span>
|
|
<span class="n">layer</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">gdf</span><span class="p">:</span> <span class="n">gp</span><span class="o">.</span><span class="n">GeoDataFrame</span><span class="p">,</span>
|
|
<span class="n">width</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">dict</span><span class="p">,</span> <span class="nb">float</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">point_size</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">line_width</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">GeometryCollection</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Convert a dict of GeoDataFrames to a dict of shapely geometries</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> layer (str): Layer name</span>
|
|
<span class="sd"> gdf (gp.GeoDataFrame): Input GeoDataFrame</span>
|
|
<span class="sd"> width (Optional[Union[dict, float]], optional): Street network width. Can be either a dictionary or a float. Defaults to None.</span>
|
|
<span class="sd"> point_size (Optional[float], optional): Point geometries (1D) will be dilated by this amount. Defaults to None.</span>
|
|
<span class="sd"> line_width (Optional[float], optional): Line geometries (2D) will be dilated by this amount. Defaults to None.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> GeometryCollection: Output GeoDataFrame</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="c1"># Project gdf if applicable</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">gdf</span><span class="o">.</span><span class="n">empty</span> <span class="ow">and</span> <span class="n">gdf</span><span class="o">.</span><span class="n">crs</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">gdf</span> <span class="o">=</span> <span class="n">ox</span><span class="o">.</span><span class="n">projection</span><span class="o">.</span><span class="n">project_gdf</span><span class="p">(</span><span class="n">gdf</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="n">layer</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"streets"</span><span class="p">,</span> <span class="s2">"railway"</span><span class="p">,</span> <span class="s2">"waterway"</span><span class="p">]:</span>
|
|
<span class="n">geometries</span> <span class="o">=</span> <span class="n">graph_to_shapely</span><span class="p">(</span><span class="n">gdf</span><span class="p">,</span> <span class="n">width</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">geometries</span> <span class="o">=</span> <span class="n">geometries_to_shapely</span><span class="p">(</span>
|
|
<span class="n">gdf</span><span class="p">,</span> <span class="n">point_size</span><span class="o">=</span><span class="n">point_size</span><span class="p">,</span> <span class="n">line_width</span><span class="o">=</span><span class="n">line_width</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">return</span> <span class="n">geometries</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.draw.geometries_to_shapely" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">geometries_to_shapely</span><span class="p">(</span><span class="n">gdf</span><span class="p">,</span> <span class="n">point_size</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">line_width</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Convert geometries in GeoDataFrame to shapely format</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>gdf</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="geopandas.GeoDataFrame">GeoDataFrame</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Input GeoDataFrame</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>point_size</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Optional">Optional</span>[<span title="float">float</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Point geometries (1D) will be dilated by this amount. Defaults to None.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>line_width</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Optional">Optional</span>[<span title="float">float</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Line geometries (2D) will be dilated by this amount. Defaults to None.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th> <th>Type</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td><code>GeometryCollection</code></td> <td>
|
|
<code><span title="shapely.geometry.GeometryCollection">GeometryCollection</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Shapely geometries computed from GeoDataFrame geometries</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">215</span>
|
|
<span class="normal">216</span>
|
|
<span class="normal">217</span>
|
|
<span class="normal">218</span>
|
|
<span class="normal">219</span>
|
|
<span class="normal">220</span>
|
|
<span class="normal">221</span>
|
|
<span class="normal">222</span>
|
|
<span class="normal">223</span>
|
|
<span class="normal">224</span>
|
|
<span class="normal">225</span>
|
|
<span class="normal">226</span>
|
|
<span class="normal">227</span>
|
|
<span class="normal">228</span>
|
|
<span class="normal">229</span>
|
|
<span class="normal">230</span>
|
|
<span class="normal">231</span>
|
|
<span class="normal">232</span>
|
|
<span class="normal">233</span>
|
|
<span class="normal">234</span>
|
|
<span class="normal">235</span>
|
|
<span class="normal">236</span>
|
|
<span class="normal">237</span>
|
|
<span class="normal">238</span>
|
|
<span class="normal">239</span>
|
|
<span class="normal">240</span>
|
|
<span class="normal">241</span>
|
|
<span class="normal">242</span>
|
|
<span class="normal">243</span>
|
|
<span class="normal">244</span>
|
|
<span class="normal">245</span>
|
|
<span class="normal">246</span>
|
|
<span class="normal">247</span>
|
|
<span class="normal">248</span>
|
|
<span class="normal">249</span>
|
|
<span class="normal">250</span>
|
|
<span class="normal">251</span>
|
|
<span class="normal">252</span>
|
|
<span class="normal">253</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">geometries_to_shapely</span><span class="p">(</span>
|
|
<span class="n">gdf</span><span class="p">:</span> <span class="n">gp</span><span class="o">.</span><span class="n">GeoDataFrame</span><span class="p">,</span>
|
|
<span class="n">point_size</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">line_width</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">GeometryCollection</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Convert geometries in GeoDataFrame to shapely format</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> gdf (gp.GeoDataFrame): Input GeoDataFrame</span>
|
|
<span class="sd"> point_size (Optional[float], optional): Point geometries (1D) will be dilated by this amount. Defaults to None.</span>
|
|
<span class="sd"> line_width (Optional[float], optional): Line geometries (2D) will be dilated by this amount. Defaults to None.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> GeometryCollection: Shapely geometries computed from GeoDataFrame geometries</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">geoms</span> <span class="o">=</span> <span class="n">gdf</span><span class="o">.</span><span class="n">geometry</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span>
|
|
<span class="n">collections</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">geoms</span> <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">==</span> <span class="n">GeometryCollection</span><span class="p">]</span>
|
|
<span class="n">points</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">geoms</span> <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">==</span> <span class="n">Point</span><span class="p">]</span> <span class="o">+</span> <span class="p">[</span>
|
|
<span class="n">y</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">collections</span> <span class="k">for</span> <span class="n">y</span> <span class="ow">in</span> <span class="n">x</span><span class="o">.</span><span class="n">geoms</span> <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="o">==</span> <span class="n">Point</span>
|
|
<span class="p">]</span>
|
|
<span class="n">lines</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">geoms</span> <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="ow">in</span> <span class="p">[</span><span class="n">LineString</span><span class="p">,</span> <span class="n">MultiLineString</span><span class="p">]]</span> <span class="o">+</span> <span class="p">[</span>
|
|
<span class="n">y</span>
|
|
<span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">collections</span>
|
|
<span class="k">for</span> <span class="n">y</span> <span class="ow">in</span> <span class="n">x</span><span class="o">.</span><span class="n">geoms</span>
|
|
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="ow">in</span> <span class="p">[</span><span class="n">LineString</span><span class="p">,</span> <span class="n">MultiLineString</span><span class="p">]</span>
|
|
<span class="p">]</span>
|
|
<span class="n">polys</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">geoms</span> <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="ow">in</span> <span class="p">[</span><span class="n">Polygon</span><span class="p">,</span> <span class="n">MultiPolygon</span><span class="p">]]</span> <span class="o">+</span> <span class="p">[</span>
|
|
<span class="n">y</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">collections</span> <span class="k">for</span> <span class="n">y</span> <span class="ow">in</span> <span class="n">x</span><span class="o">.</span><span class="n">geoms</span> <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="ow">in</span> <span class="p">[</span><span class="n">Polygon</span><span class="p">,</span> <span class="n">MultiPolygon</span><span class="p">]</span>
|
|
<span class="p">]</span>
|
|
|
|
<span class="c1"># Convert points into circles with radius "point_size"</span>
|
|
<span class="k">if</span> <span class="n">point_size</span><span class="p">:</span>
|
|
<span class="n">points</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">buffer</span><span class="p">(</span><span class="n">point_size</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">points</span><span class="p">]</span> <span class="k">if</span> <span class="n">point_size</span> <span class="o">></span> <span class="mi">0</span> <span class="k">else</span> <span class="p">[]</span>
|
|
<span class="k">if</span> <span class="n">line_width</span><span class="p">:</span>
|
|
<span class="n">lines</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">buffer</span><span class="p">(</span><span class="n">line_width</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">]</span> <span class="k">if</span> <span class="n">line_width</span> <span class="o">></span> <span class="mi">0</span> <span class="k">else</span> <span class="p">[]</span>
|
|
|
|
<span class="k">return</span> <span class="n">GeometryCollection</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">points</span><span class="p">)</span> <span class="o">+</span> <span class="nb">list</span><span class="p">(</span><span class="n">lines</span><span class="p">)</span> <span class="o">+</span> <span class="nb">list</span><span class="p">(</span><span class="n">polys</span><span class="p">))</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.draw.graph_to_shapely" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">graph_to_shapely</span><span class="p">(</span><span class="n">gdf</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mf">1.0</span><span class="p">)</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Given a GeoDataFrame containing a graph (street newtork),
|
|
convert them to shapely geometries by applying dilation given by 'width'</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>gdf</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="geopandas.GeoDataFrame">GeoDataFrame</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>input GeoDataFrame containing graph (street network) geometries</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>width</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="float">float</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Line geometries will be dilated by this amount. Defaults to 1..</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>1.0</code>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th> <th>Type</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td><code>BaseGeometry</code></td> <td>
|
|
<code><span title="shapely.geometry.base.BaseGeometry">BaseGeometry</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Shapely</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">171</span>
|
|
<span class="normal">172</span>
|
|
<span class="normal">173</span>
|
|
<span class="normal">174</span>
|
|
<span class="normal">175</span>
|
|
<span class="normal">176</span>
|
|
<span class="normal">177</span>
|
|
<span class="normal">178</span>
|
|
<span class="normal">179</span>
|
|
<span class="normal">180</span>
|
|
<span class="normal">181</span>
|
|
<span class="normal">182</span>
|
|
<span class="normal">183</span>
|
|
<span class="normal">184</span>
|
|
<span class="normal">185</span>
|
|
<span class="normal">186</span>
|
|
<span class="normal">187</span>
|
|
<span class="normal">188</span>
|
|
<span class="normal">189</span>
|
|
<span class="normal">190</span>
|
|
<span class="normal">191</span>
|
|
<span class="normal">192</span>
|
|
<span class="normal">193</span>
|
|
<span class="normal">194</span>
|
|
<span class="normal">195</span>
|
|
<span class="normal">196</span>
|
|
<span class="normal">197</span>
|
|
<span class="normal">198</span>
|
|
<span class="normal">199</span>
|
|
<span class="normal">200</span>
|
|
<span class="normal">201</span>
|
|
<span class="normal">202</span>
|
|
<span class="normal">203</span>
|
|
<span class="normal">204</span>
|
|
<span class="normal">205</span>
|
|
<span class="normal">206</span>
|
|
<span class="normal">207</span>
|
|
<span class="normal">208</span>
|
|
<span class="normal">209</span>
|
|
<span class="normal">210</span>
|
|
<span class="normal">211</span>
|
|
<span class="normal">212</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">graph_to_shapely</span><span class="p">(</span><span class="n">gdf</span><span class="p">:</span> <span class="n">gp</span><span class="o">.</span><span class="n">GeoDataFrame</span><span class="p">,</span> <span class="n">width</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">)</span> <span class="o">-></span> <span class="n">BaseGeometry</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Given a GeoDataFrame containing a graph (street newtork),</span>
|
|
<span class="sd"> convert them to shapely geometries by applying dilation given by 'width'</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> gdf (gp.GeoDataFrame): input GeoDataFrame containing graph (street network) geometries</span>
|
|
<span class="sd"> width (float, optional): Line geometries will be dilated by this amount. Defaults to 1..</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> BaseGeometry: Shapely</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">highway_to_width</span><span class="p">(</span><span class="n">highway</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">highway</span><span class="p">)</span> <span class="o">==</span> <span class="nb">str</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n">highway</span> <span class="ow">in</span> <span class="n">width</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">width</span><span class="p">[</span><span class="n">highway</span><span class="p">]</span>
|
|
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">highway</span><span class="p">,</span> <span class="n">Iterable</span><span class="p">):</span>
|
|
<span class="k">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">highway</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">width</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="n">width</span><span class="p">[</span><span class="n">h</span><span class="p">]</span>
|
|
<span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span>
|
|
|
|
<span class="c1"># Annotate GeoDataFrame with the width for each highway type</span>
|
|
<span class="n">gdf</span><span class="p">[</span><span class="s2">"width"</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="n">gdf</span><span class="p">[</span><span class="s2">"highway"</span><span class="p">]</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="n">highway_to_width</span><span class="p">)</span> <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">width</span><span class="p">)</span> <span class="o">==</span> <span class="nb">dict</span> <span class="k">else</span> <span class="n">width</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># Remove rows with inexistent width</span>
|
|
<span class="n">gdf</span><span class="o">.</span><span class="n">drop</span><span class="p">(</span><span class="n">gdf</span><span class="p">[</span><span class="n">gdf</span><span class="o">.</span><span class="n">width</span><span class="o">.</span><span class="n">isna</span><span class="p">()]</span><span class="o">.</span><span class="n">index</span><span class="p">,</span> <span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
|
|
<span class="k">with</span> <span class="n">warnings</span><span class="o">.</span><span class="n">catch_warnings</span><span class="p">():</span>
|
|
<span class="c1"># Supress shapely.errors.ShapelyDeprecationWarning</span>
|
|
<span class="n">warnings</span><span class="o">.</span><span class="n">simplefilter</span><span class="p">(</span><span class="s2">"ignore"</span><span class="p">,</span> <span class="n">shapely</span><span class="o">.</span><span class="n">errors</span><span class="o">.</span><span class="n">ShapelyDeprecationWarning</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">(</span><span class="n">gdf</span><span class="o">.</span><span class="n">width</span><span class="o">.</span><span class="n">isna</span><span class="p">()):</span>
|
|
<span class="c1"># Dilate geometries based on their width</span>
|
|
<span class="n">gdf</span><span class="o">.</span><span class="n">geometry</span> <span class="o">=</span> <span class="n">gdf</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span>
|
|
<span class="k">lambda</span> <span class="n">row</span><span class="p">:</span> <span class="n">row</span><span class="p">[</span><span class="s2">"geometry"</span><span class="p">]</span><span class="o">.</span><span class="n">buffer</span><span class="p">(</span><span class="n">row</span><span class="o">.</span><span class="n">width</span><span class="p">),</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">return</span> <span class="n">shapely</span><span class="o">.</span><span class="n">ops</span><span class="o">.</span><span class="n">unary_union</span><span class="p">(</span><span class="n">gdf</span><span class="o">.</span><span class="n">geometry</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.draw.manage_presets" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">manage_presets</span><span class="p">(</span><span class="n">load_preset</span><span class="p">,</span> <span class="n">save_preset</span><span class="p">,</span> <span class="n">update_preset</span><span class="p">,</span> <span class="n">layers</span><span class="p">,</span> <span class="n">style</span><span class="p">,</span> <span class="n">circle</span><span class="p">,</span> <span class="n">radius</span><span class="p">,</span> <span class="n">dilate</span><span class="p">,</span> <span class="n">logging</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p><em>summary</em></p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>load_preset</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Optional">Optional</span>[<span title="str">str</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Load preset named 'load_preset', if provided</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>save_preset</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Optional">Optional</span>[<span title="str">str</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Save preset to file named 'save_preset', if provided</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>update_preset</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Optional">Optional</span>[<span title="str">str</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Load, update and save preset named 'update_preset', if provided</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>layers</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="dict">dict</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>prettymaps.plot() 'layers' parameter dict</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>style</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="dict">dict</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>prettymaps.plot() 'style' parameter dict</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>circle</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Optional">Optional</span>[<span title="bool">bool</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>prettymaps.plot() 'circle' parameter</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>radius</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Optional">Optional</span>[<span title="typing.Union">Union</span>[<span title="float">float</span>, <span title="bool">bool</span>]]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>prettymaps.plot() 'radius' parameter</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>dilate</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Optional">Optional</span>[<span title="typing.Union">Union</span>[<span title="float">float</span>, <span title="bool">bool</span>]]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>prettymaps.plot() 'dilate' parameter</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code><span title="typing.Tuple">Tuple</span>[<span title="dict">dict</span>, <span title="dict">dict</span>, <span title="typing.Optional">Optional</span>[<span title="float">float</span>], <span title="typing.Optional">Optional</span>[<span title="typing.Union">Union</span>[<span title="float">float</span>, <span title="bool">bool</span>]], <span title="typing.Optional">Optional</span>[<span title="typing.Union">Union</span>[<span title="float">float</span>, <span title="bool">bool</span>]]]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Tuple[dict, dict, Optional[float], Optional[Union[float, bool]], Optional[Union[float, bool]]]: Updated layers, style, circle, radius, dilate parameters</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">765</span>
|
|
<span class="normal">766</span>
|
|
<span class="normal">767</span>
|
|
<span class="normal">768</span>
|
|
<span class="normal">769</span>
|
|
<span class="normal">770</span>
|
|
<span class="normal">771</span>
|
|
<span class="normal">772</span>
|
|
<span class="normal">773</span>
|
|
<span class="normal">774</span>
|
|
<span class="normal">775</span>
|
|
<span class="normal">776</span>
|
|
<span class="normal">777</span>
|
|
<span class="normal">778</span>
|
|
<span class="normal">779</span>
|
|
<span class="normal">780</span>
|
|
<span class="normal">781</span>
|
|
<span class="normal">782</span>
|
|
<span class="normal">783</span>
|
|
<span class="normal">784</span>
|
|
<span class="normal">785</span>
|
|
<span class="normal">786</span>
|
|
<span class="normal">787</span>
|
|
<span class="normal">788</span>
|
|
<span class="normal">789</span>
|
|
<span class="normal">790</span>
|
|
<span class="normal">791</span>
|
|
<span class="normal">792</span>
|
|
<span class="normal">793</span>
|
|
<span class="normal">794</span>
|
|
<span class="normal">795</span>
|
|
<span class="normal">796</span>
|
|
<span class="normal">797</span>
|
|
<span class="normal">798</span>
|
|
<span class="normal">799</span>
|
|
<span class="normal">800</span>
|
|
<span class="normal">801</span>
|
|
<span class="normal">802</span>
|
|
<span class="normal">803</span>
|
|
<span class="normal">804</span>
|
|
<span class="normal">805</span>
|
|
<span class="normal">806</span>
|
|
<span class="normal">807</span>
|
|
<span class="normal">808</span>
|
|
<span class="normal">809</span>
|
|
<span class="normal">810</span>
|
|
<span class="normal">811</span>
|
|
<span class="normal">812</span>
|
|
<span class="normal">813</span>
|
|
<span class="normal">814</span>
|
|
<span class="normal">815</span>
|
|
<span class="normal">816</span>
|
|
<span class="normal">817</span>
|
|
<span class="normal">818</span>
|
|
<span class="normal">819</span>
|
|
<span class="normal">820</span>
|
|
<span class="normal">821</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="nd">@log_execution_time</span>
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">manage_presets</span><span class="p">(</span>
|
|
<span class="n">load_preset</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span>
|
|
<span class="n">save_preset</span><span class="p">:</span> <span class="nb">bool</span><span class="p">,</span>
|
|
<span class="n">update_preset</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span>
|
|
<span class="n">layers</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">dict</span><span class="p">],</span>
|
|
<span class="n">style</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">dict</span><span class="p">],</span>
|
|
<span class="n">circle</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">],</span>
|
|
<span class="n">radius</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">float</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]],</span>
|
|
<span class="n">dilate</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">float</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]],</span>
|
|
<span class="n">logging</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">Tuple</span><span class="p">[</span>
|
|
<span class="nb">dict</span><span class="p">,</span>
|
|
<span class="nb">dict</span><span class="p">,</span>
|
|
<span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span>
|
|
<span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">float</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]],</span>
|
|
<span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">float</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]],</span>
|
|
<span class="p">]:</span>
|
|
<span class="w"> </span><span class="sd">"""_summary_</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> load_preset (Optional[str]): Load preset named 'load_preset', if provided</span>
|
|
<span class="sd"> save_preset (Optional[str]): Save preset to file named 'save_preset', if provided</span>
|
|
<span class="sd"> update_preset (Optional[str]): Load, update and save preset named 'update_preset', if provided</span>
|
|
<span class="sd"> layers (Dict[str, dict]): prettymaps.plot() 'layers' parameter dict</span>
|
|
<span class="sd"> style (Dict[str, dict]): prettymaps.plot() 'style' parameter dict</span>
|
|
<span class="sd"> circle (Optional[bool]): prettymaps.plot() 'circle' parameter</span>
|
|
<span class="sd"> radius (Optional[Union[float, bool]]): prettymaps.plot() 'radius' parameter</span>
|
|
<span class="sd"> dilate (Optional[Union[float, bool]]): prettymaps.plot() 'dilate' parameter</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> Tuple[dict, dict, Optional[float], Optional[Union[float, bool]], Optional[Union[float, bool]]]: Updated layers, style, circle, radius, dilate parameters</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="c1"># Update preset mode: load a preset, update it with additional parameters and update the JSON file</span>
|
|
<span class="k">if</span> <span class="n">update_preset</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="c1"># load_preset = save_preset = True</span>
|
|
<span class="n">load_preset</span> <span class="o">=</span> <span class="n">save_preset</span> <span class="o">=</span> <span class="n">update_preset</span>
|
|
|
|
<span class="c1"># Load preset (if provided)</span>
|
|
<span class="k">if</span> <span class="n">load_preset</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">layers</span><span class="p">,</span> <span class="n">style</span><span class="p">,</span> <span class="n">circle</span><span class="p">,</span> <span class="n">radius</span><span class="p">,</span> <span class="n">dilate</span> <span class="o">=</span> <span class="n">override_preset</span><span class="p">(</span>
|
|
<span class="n">load_preset</span><span class="p">,</span> <span class="n">layers</span><span class="p">,</span> <span class="n">style</span><span class="p">,</span> <span class="n">circle</span><span class="p">,</span> <span class="n">radius</span><span class="p">,</span> <span class="n">dilate</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># Save parameters as preset</span>
|
|
<span class="k">if</span> <span class="n">save_preset</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">create_preset</span><span class="p">(</span>
|
|
<span class="n">save_preset</span><span class="p">,</span>
|
|
<span class="n">layers</span><span class="o">=</span><span class="n">layers</span><span class="p">,</span>
|
|
<span class="n">style</span><span class="o">=</span><span class="n">style</span><span class="p">,</span>
|
|
<span class="n">circle</span><span class="o">=</span><span class="n">circle</span><span class="p">,</span>
|
|
<span class="n">radius</span><span class="o">=</span><span class="n">radius</span><span class="p">,</span>
|
|
<span class="n">dilate</span><span class="o">=</span><span class="n">dilate</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="k">return</span> <span class="n">layers</span><span class="p">,</span> <span class="n">style</span><span class="p">,</span> <span class="n">circle</span><span class="p">,</span> <span class="n">radius</span><span class="p">,</span> <span class="n">dilate</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.draw.multiplot" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">multiplot</span><span class="p">(</span><span class="o">*</span><span class="n">subplots</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">credit</span><span class="o">=</span><span class="p">{},</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Creates a multiplot using the provided subplots and optional parameters.</p>
|
|
<h5 id="prettymaps.draw.multiplot--parameters">Parameters:</h5>
|
|
<p><em>subplots : list
|
|
A list of subplot objects to be plotted.
|
|
figsize : tuple, optional
|
|
A tuple specifying the figure size (width, height) in inches.
|
|
credit : dict, optional
|
|
A dictionary containing credit information for the plot.
|
|
</em>*kwargs : dict, optional
|
|
Additional keyword arguments to customize the plot.</p>
|
|
<h5 id="prettymaps.draw.multiplot--returns">Returns:</h5>
|
|
<p>None</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1253</span>
|
|
<span class="normal">1254</span>
|
|
<span class="normal">1255</span>
|
|
<span class="normal">1256</span>
|
|
<span class="normal">1257</span>
|
|
<span class="normal">1258</span>
|
|
<span class="normal">1259</span>
|
|
<span class="normal">1260</span>
|
|
<span class="normal">1261</span>
|
|
<span class="normal">1262</span>
|
|
<span class="normal">1263</span>
|
|
<span class="normal">1264</span>
|
|
<span class="normal">1265</span>
|
|
<span class="normal">1266</span>
|
|
<span class="normal">1267</span>
|
|
<span class="normal">1268</span>
|
|
<span class="normal">1269</span>
|
|
<span class="normal">1270</span>
|
|
<span class="normal">1271</span>
|
|
<span class="normal">1272</span>
|
|
<span class="normal">1273</span>
|
|
<span class="normal">1274</span>
|
|
<span class="normal">1275</span>
|
|
<span class="normal">1276</span>
|
|
<span class="normal">1277</span>
|
|
<span class="normal">1278</span>
|
|
<span class="normal">1279</span>
|
|
<span class="normal">1280</span>
|
|
<span class="normal">1281</span>
|
|
<span class="normal">1282</span>
|
|
<span class="normal">1283</span>
|
|
<span class="normal">1284</span>
|
|
<span class="normal">1285</span>
|
|
<span class="normal">1286</span>
|
|
<span class="normal">1287</span>
|
|
<span class="normal">1288</span>
|
|
<span class="normal">1289</span>
|
|
<span class="normal">1290</span>
|
|
<span class="normal">1291</span>
|
|
<span class="normal">1292</span>
|
|
<span class="normal">1293</span>
|
|
<span class="normal">1294</span>
|
|
<span class="normal">1295</span>
|
|
<span class="normal">1296</span>
|
|
<span class="normal">1297</span>
|
|
<span class="normal">1298</span>
|
|
<span class="normal">1299</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">multiplot</span><span class="p">(</span><span class="o">*</span><span class="n">subplots</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">credit</span><span class="o">=</span><span class="p">{},</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Creates a multiplot using the provided subplots and optional parameters.</span>
|
|
|
|
<span class="sd"> Parameters:</span>
|
|
<span class="sd"> -----------</span>
|
|
<span class="sd"> *subplots : list</span>
|
|
<span class="sd"> A list of subplot objects to be plotted.</span>
|
|
<span class="sd"> figsize : tuple, optional</span>
|
|
<span class="sd"> A tuple specifying the figure size (width, height) in inches.</span>
|
|
<span class="sd"> credit : dict, optional</span>
|
|
<span class="sd"> A dictionary containing credit information for the plot.</span>
|
|
<span class="sd"> **kwargs : dict, optional</span>
|
|
<span class="sd"> Additional keyword arguments to customize the plot.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> --------</span>
|
|
<span class="sd"> None</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="n">figsize</span><span class="p">)</span>
|
|
<span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">111</span><span class="p">,</span> <span class="n">aspect</span><span class="o">=</span><span class="s2">"equal"</span><span class="p">)</span>
|
|
|
|
<span class="n">mode</span> <span class="o">=</span> <span class="s2">"plotter"</span> <span class="k">if</span> <span class="s2">"plotter"</span> <span class="ow">in</span> <span class="n">kwargs</span> <span class="ow">and</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"plotter"</span><span class="p">]</span> <span class="k">else</span> <span class="s2">"matplotlib"</span>
|
|
|
|
<span class="n">subplots_results</span> <span class="o">=</span> <span class="p">[</span>
|
|
<span class="n">plot</span><span class="p">(</span>
|
|
<span class="n">subplot</span><span class="o">.</span><span class="n">query</span><span class="p">,</span>
|
|
<span class="n">ax</span><span class="o">=</span><span class="n">ax</span><span class="p">,</span>
|
|
<span class="n">multiplot</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
|
<span class="o">**</span><span class="n">override_params</span><span class="p">(</span>
|
|
<span class="n">subplot</span><span class="o">.</span><span class="n">kwargs</span><span class="p">,</span>
|
|
<span class="p">{</span>
|
|
<span class="n">k</span><span class="p">:</span> <span class="n">v</span>
|
|
<span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
|
<span class="k">if</span> <span class="n">k</span> <span class="o">!=</span> <span class="s2">"load_preset"</span> <span class="ow">or</span> <span class="s2">"load_preset"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">subplot</span><span class="o">.</span><span class="n">kwargs</span>
|
|
<span class="p">},</span>
|
|
<span class="p">),</span>
|
|
<span class="n">show</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="k">for</span> <span class="n">subplot</span> <span class="ow">in</span> <span class="n">subplots</span>
|
|
<span class="p">]</span>
|
|
|
|
<span class="k">if</span> <span class="n">mode</span> <span class="o">==</span> <span class="s2">"matplotlib"</span><span class="p">:</span>
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s2">"off"</span><span class="p">)</span>
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s2">"equal"</span><span class="p">)</span>
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">autoscale</span><span class="p">()</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.draw.override_args" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">override_args</span><span class="p">(</span><span class="n">layers</span><span class="p">,</span> <span class="n">circle</span><span class="p">,</span> <span class="n">dilate</span><span class="p">,</span> <span class="n">logging</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Override arguments in layers' kwargs</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>layers</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="dict">dict</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>prettymaps.plot() Layers parameters dict</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>circle</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Optional">Optional</span>[<span title="bool">bool</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>prettymaps.plot() 'Circle' parameter</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>dilate</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Optional">Optional</span>[<span title="typing.Union">Union</span>[<span title="float">float</span>, <span title="bool">bool</span>]]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>prettymaps.plot() 'dilate' parameter</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th> <th>Type</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td><code>dict</code></td> <td>
|
|
<code><span title="dict">dict</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>output dict</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1041</span>
|
|
<span class="normal">1042</span>
|
|
<span class="normal">1043</span>
|
|
<span class="normal">1044</span>
|
|
<span class="normal">1045</span>
|
|
<span class="normal">1046</span>
|
|
<span class="normal">1047</span>
|
|
<span class="normal">1048</span>
|
|
<span class="normal">1049</span>
|
|
<span class="normal">1050</span>
|
|
<span class="normal">1051</span>
|
|
<span class="normal">1052</span>
|
|
<span class="normal">1053</span>
|
|
<span class="normal">1054</span>
|
|
<span class="normal">1055</span>
|
|
<span class="normal">1056</span>
|
|
<span class="normal">1057</span>
|
|
<span class="normal">1058</span>
|
|
<span class="normal">1059</span>
|
|
<span class="normal">1060</span>
|
|
<span class="normal">1061</span>
|
|
<span class="normal">1062</span>
|
|
<span class="normal">1063</span>
|
|
<span class="normal">1064</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="nd">@log_execution_time</span>
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">override_args</span><span class="p">(</span>
|
|
<span class="n">layers</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span>
|
|
<span class="n">circle</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">],</span>
|
|
<span class="n">dilate</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">float</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]],</span>
|
|
<span class="n">logging</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Override arguments in layers' kwargs</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> layers (dict): prettymaps.plot() Layers parameters dict</span>
|
|
<span class="sd"> circle (Optional[bool]): prettymaps.plot() 'Circle' parameter</span>
|
|
<span class="sd"> dilate (Optional[Union[float, bool]]): prettymaps.plot() 'dilate' parameter</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> dict: output dict</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">override_args</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"circle"</span><span class="p">,</span> <span class="s2">"dilate"</span><span class="p">]</span>
|
|
<span class="k">for</span> <span class="n">layer</span> <span class="ow">in</span> <span class="n">layers</span><span class="p">:</span>
|
|
<span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">override_args</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">arg</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">layers</span><span class="p">[</span><span class="n">layer</span><span class="p">]:</span>
|
|
<span class="n">layers</span><span class="p">[</span><span class="n">layer</span><span class="p">][</span><span class="n">arg</span><span class="p">]</span> <span class="o">=</span> <span class="nb">locals</span><span class="p">()[</span><span class="n">arg</span><span class="p">]</span>
|
|
<span class="k">return</span> <span class="n">layers</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.draw.override_params" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">override_params</span><span class="p">(</span><span class="n">default_dict</span><span class="p">,</span> <span class="n">new_dict</span><span class="p">)</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Override parameters in 'default_dict' with additional parameters from 'new_dict'</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>default_dict</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="dict">dict</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Default dict to be overriden with 'new_dict' parameters</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>new_dict</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="dict">dict</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>New dict to override 'default_dict' parameters</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th> <th>Type</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td><code>dict</code></td> <td>
|
|
<code><span title="dict">dict</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>default_dict overriden with new_dict parameters</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1015</span>
|
|
<span class="normal">1016</span>
|
|
<span class="normal">1017</span>
|
|
<span class="normal">1018</span>
|
|
<span class="normal">1019</span>
|
|
<span class="normal">1020</span>
|
|
<span class="normal">1021</span>
|
|
<span class="normal">1022</span>
|
|
<span class="normal">1023</span>
|
|
<span class="normal">1024</span>
|
|
<span class="normal">1025</span>
|
|
<span class="normal">1026</span>
|
|
<span class="normal">1027</span>
|
|
<span class="normal">1028</span>
|
|
<span class="normal">1029</span>
|
|
<span class="normal">1030</span>
|
|
<span class="normal">1031</span>
|
|
<span class="normal">1032</span>
|
|
<span class="normal">1033</span>
|
|
<span class="normal">1034</span>
|
|
<span class="normal">1035</span>
|
|
<span class="normal">1036</span>
|
|
<span class="normal">1037</span>
|
|
<span class="normal">1038</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">override_params</span><span class="p">(</span><span class="n">default_dict</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span> <span class="n">new_dict</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Override parameters in 'default_dict' with additional parameters from 'new_dict'</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> default_dict (dict): Default dict to be overriden with 'new_dict' parameters</span>
|
|
<span class="sd"> new_dict (dict): New dict to override 'default_dict' parameters</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> dict: default_dict overriden with new_dict parameters</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">final_dict</span> <span class="o">=</span> <span class="n">deepcopy</span><span class="p">(</span><span class="n">default_dict</span><span class="p">)</span>
|
|
|
|
<span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">new_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
|
|
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">new_dict</span><span class="p">[</span><span class="n">key</span><span class="p">])</span> <span class="o">==</span> <span class="nb">dict</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">final_dict</span><span class="p">:</span>
|
|
<span class="n">final_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">override_params</span><span class="p">(</span><span class="n">final_dict</span><span class="p">[</span><span class="n">key</span><span class="p">],</span> <span class="n">new_dict</span><span class="p">[</span><span class="n">key</span><span class="p">])</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">final_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">final_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_dict</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
|
|
|
|
<span class="k">return</span> <span class="n">final_dict</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.draw.override_preset" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">override_preset</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">layers</span><span class="o">=</span><span class="p">{},</span> <span class="n">style</span><span class="o">=</span><span class="p">{},</span> <span class="n">circle</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">radius</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dilate</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Read the preset file given by 'name' and override it with additional parameters</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>name</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="str">str</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p><em>description</em></p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>layers</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="dict">dict</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p><em>description</em>. Defaults to {}.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>{}</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>style</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="dict">dict</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p><em>description</em>. Defaults to {}.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>{}</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>circle</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Union">Union</span>[<span title="float">float</span>, None]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p><em>description</em>. Defaults to None.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>radius</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Union">Union</span>[<span title="float">float</span>, None]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p><em>description</em>. Defaults to None.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>dilate</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Union">Union</span>[<span title="float">float</span>, None]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p><em>description</em>. Defaults to None.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code><span title="typing.Tuple">Tuple</span>[<span title="dict">dict</span>, <span title="dict">dict</span>, <span title="typing.Optional">Optional</span>[<span title="float">float</span>], <span title="typing.Optional">Optional</span>[<span title="typing.Union">Union</span>[<span title="float">float</span>, <span title="bool">bool</span>]], <span title="typing.Optional">Optional</span>[<span title="typing.Union">Union</span>[<span title="float">float</span>, <span title="bool">bool</span>]]]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Tuple[dict, dict, Optional[float], Optional[Union[float, bool]], Optional[Union[float, bool]]]: Preset parameters overriden by additional provided parameters</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">849</span>
|
|
<span class="normal">850</span>
|
|
<span class="normal">851</span>
|
|
<span class="normal">852</span>
|
|
<span class="normal">853</span>
|
|
<span class="normal">854</span>
|
|
<span class="normal">855</span>
|
|
<span class="normal">856</span>
|
|
<span class="normal">857</span>
|
|
<span class="normal">858</span>
|
|
<span class="normal">859</span>
|
|
<span class="normal">860</span>
|
|
<span class="normal">861</span>
|
|
<span class="normal">862</span>
|
|
<span class="normal">863</span>
|
|
<span class="normal">864</span>
|
|
<span class="normal">865</span>
|
|
<span class="normal">866</span>
|
|
<span class="normal">867</span>
|
|
<span class="normal">868</span>
|
|
<span class="normal">869</span>
|
|
<span class="normal">870</span>
|
|
<span class="normal">871</span>
|
|
<span class="normal">872</span>
|
|
<span class="normal">873</span>
|
|
<span class="normal">874</span>
|
|
<span class="normal">875</span>
|
|
<span class="normal">876</span>
|
|
<span class="normal">877</span>
|
|
<span class="normal">878</span>
|
|
<span class="normal">879</span>
|
|
<span class="normal">880</span>
|
|
<span class="normal">881</span>
|
|
<span class="normal">882</span>
|
|
<span class="normal">883</span>
|
|
<span class="normal">884</span>
|
|
<span class="normal">885</span>
|
|
<span class="normal">886</span>
|
|
<span class="normal">887</span>
|
|
<span class="normal">888</span>
|
|
<span class="normal">889</span>
|
|
<span class="normal">890</span>
|
|
<span class="normal">891</span>
|
|
<span class="normal">892</span>
|
|
<span class="normal">893</span>
|
|
<span class="normal">894</span>
|
|
<span class="normal">895</span>
|
|
<span class="normal">896</span>
|
|
<span class="normal">897</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">override_preset</span><span class="p">(</span>
|
|
<span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">layers</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">dict</span><span class="p">]</span> <span class="o">=</span> <span class="p">{},</span>
|
|
<span class="n">style</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">dict</span><span class="p">]</span> <span class="o">=</span> <span class="p">{},</span>
|
|
<span class="n">circle</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">radius</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">float</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">dilate</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">float</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">Tuple</span><span class="p">[</span>
|
|
<span class="nb">dict</span><span class="p">,</span>
|
|
<span class="nb">dict</span><span class="p">,</span>
|
|
<span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">],</span>
|
|
<span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">float</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]],</span>
|
|
<span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">float</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]],</span>
|
|
<span class="p">]:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Read the preset file given by 'name' and override it with additional parameters</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> name (str): _description_</span>
|
|
<span class="sd"> layers (Dict[str, dict], optional): _description_. Defaults to {}.</span>
|
|
<span class="sd"> style (Dict[str, dict], optional): _description_. Defaults to {}.</span>
|
|
<span class="sd"> circle (Union[float, None], optional): _description_. Defaults to None.</span>
|
|
<span class="sd"> radius (Union[float, None], optional): _description_. Defaults to None.</span>
|
|
<span class="sd"> dilate (Union[float, None], optional): _description_. Defaults to None.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> Tuple[dict, dict, Optional[float], Optional[Union[float, bool]], Optional[Union[float, bool]]]: Preset parameters overriden by additional provided parameters</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">params</span> <span class="o">=</span> <span class="n">read_preset</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Override preset with kwargs</span>
|
|
<span class="k">if</span> <span class="s2">"layers"</span> <span class="ow">in</span> <span class="n">params</span><span class="p">:</span>
|
|
<span class="n">layers</span> <span class="o">=</span> <span class="n">override_params</span><span class="p">(</span><span class="n">params</span><span class="p">[</span><span class="s2">"layers"</span><span class="p">],</span> <span class="n">layers</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="s2">"style"</span> <span class="ow">in</span> <span class="n">params</span><span class="p">:</span>
|
|
<span class="n">style</span> <span class="o">=</span> <span class="n">override_params</span><span class="p">(</span><span class="n">params</span><span class="p">[</span><span class="s2">"style"</span><span class="p">],</span> <span class="n">style</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">circle</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="s2">"circle"</span> <span class="ow">in</span> <span class="n">params</span><span class="p">:</span>
|
|
<span class="n">circle</span> <span class="o">=</span> <span class="n">params</span><span class="p">[</span><span class="s2">"circle"</span><span class="p">]</span>
|
|
<span class="k">if</span> <span class="n">radius</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="s2">"radius"</span> <span class="ow">in</span> <span class="n">params</span><span class="p">:</span>
|
|
<span class="n">radius</span> <span class="o">=</span> <span class="n">params</span><span class="p">[</span><span class="s2">"radius"</span><span class="p">]</span>
|
|
<span class="k">if</span> <span class="n">dilate</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="s2">"dilate"</span> <span class="ow">in</span> <span class="n">params</span><span class="p">:</span>
|
|
<span class="n">dilate</span> <span class="o">=</span> <span class="n">params</span><span class="p">[</span><span class="s2">"dilate"</span><span class="p">]</span>
|
|
|
|
<span class="c1"># Delete layers marked as 'False' in the parameter dict</span>
|
|
<span class="k">for</span> <span class="n">layer</span> <span class="ow">in</span> <span class="p">[</span><span class="n">key</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">layers</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> <span class="k">if</span> <span class="n">layers</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">==</span> <span class="kc">False</span><span class="p">]:</span>
|
|
<span class="k">del</span> <span class="n">layers</span><span class="p">[</span><span class="n">layer</span><span class="p">]</span>
|
|
|
|
<span class="c1"># Return overriden presets</span>
|
|
<span class="k">return</span> <span class="n">layers</span><span class="p">,</span> <span class="n">style</span><span class="p">,</span> <span class="n">circle</span><span class="p">,</span> <span class="n">radius</span><span class="p">,</span> <span class="n">dilate</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.draw.plot" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">plot</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">layers</span><span class="o">=</span><span class="p">{},</span> <span class="n">style</span><span class="o">=</span><span class="p">{},</span> <span class="n">keypoints</span><span class="o">=</span><span class="p">{},</span> <span class="n">preset</span><span class="o">=</span><span class="s1">'default'</span><span class="p">,</span> <span class="n">use_preset</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">save_preset</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">update_preset</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">postprocessing</span><span class="o">=</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="p">,</span> <span class="n">circle</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">radius</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dilate</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">save_as</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">fig</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ax</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mf">11.7</span><span class="p">,</span> <span class="mf">11.7</span><span class="p">),</span> <span class="n">credit</span><span class="o">=</span><span class="p">{},</span> <span class="n">mode</span><span class="o">=</span><span class="s1">'matplotlib'</span><span class="p">,</span> <span class="n">multiplot</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">show</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">x</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">scale_x</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">scale_y</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">logging</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">semantic</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">adjust_aspect_ratio</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Plots a map based on a given query and specified parameters.
|
|
Args:
|
|
query: The query for the location to plot. This can be a string (e.g., "Porto Alegre"), a tuple of latitude and longitude coordinates, or a custom GeoDataFrame boundary.
|
|
layers: The OpenStreetMap layers to plot. Defaults to an empty dictionary.
|
|
style: Matplotlib parameters for drawing each layer. Defaults to an empty dictionary.
|
|
keypoints: Keypoints to highlight on the map. Defaults to an empty dictionary.
|
|
preset: Preset configuration to use. Defaults to "default".
|
|
use_preset: Whether to use the preset configuration. Defaults to True.
|
|
save_preset: Path to save the preset configuration. Defaults to None.
|
|
update_preset: Path to update the preset configuration with additional parameters. Defaults to None.
|
|
circle: Whether to use a circular boundary. Defaults to None.
|
|
radius: Radius for the circular or square boundary. Defaults to None.
|
|
dilate: Amount to dilate the boundary. Defaults to None.
|
|
save_as: Path to save the resulting plot. Defaults to None.
|
|
fig: Matplotlib figure object. Defaults to None.
|
|
ax: Matplotlib axes object. Defaults to None.
|
|
title: Title of the plot. Defaults to None.
|
|
figsize: Size of the figure. Defaults to (11.7, 11.7).
|
|
constrained_layout: Whether to use constrained layout for the figure. Defaults to True.
|
|
credit: Parameters for the credit message. Defaults to an empty dictionary.
|
|
mode: Mode for plotting ('matplotlib' or 'plotter'). Defaults to "matplotlib".
|
|
multiplot: Whether to use multiplot mode. Defaults to False.
|
|
show: Whether to display the plot using matplotlib. Defaults to True.
|
|
x: Translation parameter in the x direction. Defaults to 0.
|
|
y: Translation parameter in the y direction. Defaults to 0.
|
|
scale_x: Scaling parameter in the x direction. Defaults to 1.
|
|
scale_y: Scaling parameter in the y direction. Defaults to 1.
|
|
rotation: Rotation parameter in degrees. Defaults to 0.
|
|
logging: Whether to enable logging. Defaults to False.
|
|
Returns:
|
|
Plot: The resulting plot object.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1102</span>
|
|
<span class="normal">1103</span>
|
|
<span class="normal">1104</span>
|
|
<span class="normal">1105</span>
|
|
<span class="normal">1106</span>
|
|
<span class="normal">1107</span>
|
|
<span class="normal">1108</span>
|
|
<span class="normal">1109</span>
|
|
<span class="normal">1110</span>
|
|
<span class="normal">1111</span>
|
|
<span class="normal">1112</span>
|
|
<span class="normal">1113</span>
|
|
<span class="normal">1114</span>
|
|
<span class="normal">1115</span>
|
|
<span class="normal">1116</span>
|
|
<span class="normal">1117</span>
|
|
<span class="normal">1118</span>
|
|
<span class="normal">1119</span>
|
|
<span class="normal">1120</span>
|
|
<span class="normal">1121</span>
|
|
<span class="normal">1122</span>
|
|
<span class="normal">1123</span>
|
|
<span class="normal">1124</span>
|
|
<span class="normal">1125</span>
|
|
<span class="normal">1126</span>
|
|
<span class="normal">1127</span>
|
|
<span class="normal">1128</span>
|
|
<span class="normal">1129</span>
|
|
<span class="normal">1130</span>
|
|
<span class="normal">1131</span>
|
|
<span class="normal">1132</span>
|
|
<span class="normal">1133</span>
|
|
<span class="normal">1134</span>
|
|
<span class="normal">1135</span>
|
|
<span class="normal">1136</span>
|
|
<span class="normal">1137</span>
|
|
<span class="normal">1138</span>
|
|
<span class="normal">1139</span>
|
|
<span class="normal">1140</span>
|
|
<span class="normal">1141</span>
|
|
<span class="normal">1142</span>
|
|
<span class="normal">1143</span>
|
|
<span class="normal">1144</span>
|
|
<span class="normal">1145</span>
|
|
<span class="normal">1146</span>
|
|
<span class="normal">1147</span>
|
|
<span class="normal">1148</span>
|
|
<span class="normal">1149</span>
|
|
<span class="normal">1150</span>
|
|
<span class="normal">1151</span>
|
|
<span class="normal">1152</span>
|
|
<span class="normal">1153</span>
|
|
<span class="normal">1154</span>
|
|
<span class="normal">1155</span>
|
|
<span class="normal">1156</span>
|
|
<span class="normal">1157</span>
|
|
<span class="normal">1158</span>
|
|
<span class="normal">1159</span>
|
|
<span class="normal">1160</span>
|
|
<span class="normal">1161</span>
|
|
<span class="normal">1162</span>
|
|
<span class="normal">1163</span>
|
|
<span class="normal">1164</span>
|
|
<span class="normal">1165</span>
|
|
<span class="normal">1166</span>
|
|
<span class="normal">1167</span>
|
|
<span class="normal">1168</span>
|
|
<span class="normal">1169</span>
|
|
<span class="normal">1170</span>
|
|
<span class="normal">1171</span>
|
|
<span class="normal">1172</span>
|
|
<span class="normal">1173</span>
|
|
<span class="normal">1174</span>
|
|
<span class="normal">1175</span>
|
|
<span class="normal">1176</span>
|
|
<span class="normal">1177</span>
|
|
<span class="normal">1178</span>
|
|
<span class="normal">1179</span>
|
|
<span class="normal">1180</span>
|
|
<span class="normal">1181</span>
|
|
<span class="normal">1182</span>
|
|
<span class="normal">1183</span>
|
|
<span class="normal">1184</span>
|
|
<span class="normal">1185</span>
|
|
<span class="normal">1186</span>
|
|
<span class="normal">1187</span>
|
|
<span class="normal">1188</span>
|
|
<span class="normal">1189</span>
|
|
<span class="normal">1190</span>
|
|
<span class="normal">1191</span>
|
|
<span class="normal">1192</span>
|
|
<span class="normal">1193</span>
|
|
<span class="normal">1194</span>
|
|
<span class="normal">1195</span>
|
|
<span class="normal">1196</span>
|
|
<span class="normal">1197</span>
|
|
<span class="normal">1198</span>
|
|
<span class="normal">1199</span>
|
|
<span class="normal">1200</span>
|
|
<span class="normal">1201</span>
|
|
<span class="normal">1202</span>
|
|
<span class="normal">1203</span>
|
|
<span class="normal">1204</span>
|
|
<span class="normal">1205</span>
|
|
<span class="normal">1206</span>
|
|
<span class="normal">1207</span>
|
|
<span class="normal">1208</span>
|
|
<span class="normal">1209</span>
|
|
<span class="normal">1210</span>
|
|
<span class="normal">1211</span>
|
|
<span class="normal">1212</span>
|
|
<span class="normal">1213</span>
|
|
<span class="normal">1214</span>
|
|
<span class="normal">1215</span>
|
|
<span class="normal">1216</span>
|
|
<span class="normal">1217</span>
|
|
<span class="normal">1218</span>
|
|
<span class="normal">1219</span>
|
|
<span class="normal">1220</span>
|
|
<span class="normal">1221</span>
|
|
<span class="normal">1222</span>
|
|
<span class="normal">1223</span>
|
|
<span class="normal">1224</span>
|
|
<span class="normal">1225</span>
|
|
<span class="normal">1226</span>
|
|
<span class="normal">1227</span>
|
|
<span class="normal">1228</span>
|
|
<span class="normal">1229</span>
|
|
<span class="normal">1230</span>
|
|
<span class="normal">1231</span>
|
|
<span class="normal">1232</span>
|
|
<span class="normal">1233</span>
|
|
<span class="normal">1234</span>
|
|
<span class="normal">1235</span>
|
|
<span class="normal">1236</span>
|
|
<span class="normal">1237</span>
|
|
<span class="normal">1238</span>
|
|
<span class="normal">1239</span>
|
|
<span class="normal">1240</span>
|
|
<span class="normal">1241</span>
|
|
<span class="normal">1242</span>
|
|
<span class="normal">1243</span>
|
|
<span class="normal">1244</span>
|
|
<span class="normal">1245</span>
|
|
<span class="normal">1246</span>
|
|
<span class="normal">1247</span>
|
|
<span class="normal">1248</span>
|
|
<span class="normal">1249</span>
|
|
<span class="normal">1250</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">plot</span><span class="p">(</span>
|
|
<span class="n">query</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">float</span><span class="p">,</span> <span class="nb">float</span><span class="p">]</span> <span class="o">|</span> <span class="n">gp</span><span class="o">.</span><span class="n">GeoDataFrame</span><span class="p">,</span>
|
|
<span class="n">layers</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{},</span>
|
|
<span class="n">style</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{},</span>
|
|
<span class="n">keypoints</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{},</span>
|
|
<span class="n">preset</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"default"</span><span class="p">,</span>
|
|
<span class="n">use_preset</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="n">save_preset</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">update_preset</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">postprocessing</span><span class="p">:</span> <span class="n">Callable</span><span class="p">[</span>
|
|
<span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">gp</span><span class="o">.</span><span class="n">GeoDataFrame</span><span class="p">]],</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">gp</span><span class="o">.</span><span class="n">GeoDataFrame</span><span class="p">]</span>
|
|
<span class="p">]</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="p">,</span>
|
|
<span class="n">circle</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">radius</span><span class="p">:</span> <span class="nb">float</span> <span class="o">|</span> <span class="nb">bool</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">dilate</span><span class="p">:</span> <span class="nb">float</span> <span class="o">|</span> <span class="nb">bool</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">save_as</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">fig</span><span class="p">:</span> <span class="n">plt</span><span class="o">.</span><span class="n">Figure</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">ax</span><span class="p">:</span> <span class="n">plt</span><span class="o">.</span><span class="n">Axes</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">figsize</span><span class="p">:</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">float</span><span class="p">,</span> <span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="mf">11.7</span><span class="p">,</span> <span class="mf">11.7</span><span class="p">),</span>
|
|
<span class="n">credit</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{},</span>
|
|
<span class="n">mode</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"matplotlib"</span><span class="p">,</span>
|
|
<span class="n">multiplot</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
|
<span class="n">show</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="n">x</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
|
|
<span class="n">y</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
|
|
<span class="n">scale_x</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
|
|
<span class="n">scale_y</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
|
|
<span class="n">rotation</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
|
|
<span class="n">logging</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
|
<span class="n">semantic</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
|
<span class="n">adjust_aspect_ratio</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">Plot</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Plots a map based on a given query and specified parameters.</span>
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> query: The query for the location to plot. This can be a string (e.g., "Porto Alegre"), a tuple of latitude and longitude coordinates, or a custom GeoDataFrame boundary.</span>
|
|
<span class="sd"> layers: The OpenStreetMap layers to plot. Defaults to an empty dictionary.</span>
|
|
<span class="sd"> style: Matplotlib parameters for drawing each layer. Defaults to an empty dictionary.</span>
|
|
<span class="sd"> keypoints: Keypoints to highlight on the map. Defaults to an empty dictionary.</span>
|
|
<span class="sd"> preset: Preset configuration to use. Defaults to "default".</span>
|
|
<span class="sd"> use_preset: Whether to use the preset configuration. Defaults to True.</span>
|
|
<span class="sd"> save_preset: Path to save the preset configuration. Defaults to None.</span>
|
|
<span class="sd"> update_preset: Path to update the preset configuration with additional parameters. Defaults to None.</span>
|
|
<span class="sd"> circle: Whether to use a circular boundary. Defaults to None.</span>
|
|
<span class="sd"> radius: Radius for the circular or square boundary. Defaults to None.</span>
|
|
<span class="sd"> dilate: Amount to dilate the boundary. Defaults to None.</span>
|
|
<span class="sd"> save_as: Path to save the resulting plot. Defaults to None.</span>
|
|
<span class="sd"> fig: Matplotlib figure object. Defaults to None.</span>
|
|
<span class="sd"> ax: Matplotlib axes object. Defaults to None.</span>
|
|
<span class="sd"> title: Title of the plot. Defaults to None.</span>
|
|
<span class="sd"> figsize: Size of the figure. Defaults to (11.7, 11.7).</span>
|
|
<span class="sd"> constrained_layout: Whether to use constrained layout for the figure. Defaults to True.</span>
|
|
<span class="sd"> credit: Parameters for the credit message. Defaults to an empty dictionary.</span>
|
|
<span class="sd"> mode: Mode for plotting ('matplotlib' or 'plotter'). Defaults to "matplotlib".</span>
|
|
<span class="sd"> multiplot: Whether to use multiplot mode. Defaults to False.</span>
|
|
<span class="sd"> show: Whether to display the plot using matplotlib. Defaults to True.</span>
|
|
<span class="sd"> x: Translation parameter in the x direction. Defaults to 0.</span>
|
|
<span class="sd"> y: Translation parameter in the y direction. Defaults to 0.</span>
|
|
<span class="sd"> scale_x: Scaling parameter in the x direction. Defaults to 1.</span>
|
|
<span class="sd"> scale_y: Scaling parameter in the y direction. Defaults to 1.</span>
|
|
<span class="sd"> rotation: Rotation parameter in degrees. Defaults to 0.</span>
|
|
<span class="sd"> logging: Whether to enable logging. Defaults to False.</span>
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> Plot: The resulting plot object.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="c1"># 1. Manage presets</span>
|
|
<span class="n">layers</span><span class="p">,</span> <span class="n">style</span><span class="p">,</span> <span class="n">circle</span><span class="p">,</span> <span class="n">radius</span><span class="p">,</span> <span class="n">dilate</span> <span class="o">=</span> <span class="n">manage_presets</span><span class="p">(</span>
|
|
<span class="n">preset</span> <span class="k">if</span> <span class="n">use_preset</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">save_preset</span><span class="p">,</span>
|
|
<span class="n">update_preset</span><span class="p">,</span>
|
|
<span class="n">layers</span><span class="p">,</span>
|
|
<span class="n">style</span><span class="p">,</span>
|
|
<span class="n">circle</span><span class="p">,</span>
|
|
<span class="n">radius</span><span class="p">,</span>
|
|
<span class="n">dilate</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># 2. Init matplotlib figure & axis and vsketch object</span>
|
|
<span class="n">fig</span><span class="p">,</span> <span class="n">ax</span><span class="p">,</span> <span class="n">vsk</span> <span class="o">=</span> <span class="n">init_plot</span><span class="p">(</span>
|
|
<span class="n">layers</span><span class="p">,</span>
|
|
<span class="n">fig</span><span class="p">,</span>
|
|
<span class="n">ax</span><span class="p">,</span>
|
|
<span class="n">figsize</span><span class="p">,</span>
|
|
<span class="n">mode</span><span class="p">,</span>
|
|
<span class="n">adjust_aspect_ratio</span><span class="o">=</span><span class="n">adjust_aspect_ratio</span><span class="p">,</span>
|
|
<span class="n">logging</span><span class="o">=</span><span class="n">logging</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># 3. Override arguments in layers' kwargs dict</span>
|
|
<span class="n">layers</span> <span class="o">=</span> <span class="n">override_args</span><span class="p">(</span><span class="n">layers</span><span class="p">,</span> <span class="n">circle</span><span class="p">,</span> <span class="n">dilate</span><span class="p">,</span> <span class="n">logging</span><span class="o">=</span><span class="n">logging</span><span class="p">)</span>
|
|
|
|
<span class="c1"># 4. Fetch geodataframes</span>
|
|
<span class="n">start_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
|
|
<span class="n">gdfs</span> <span class="o">=</span> <span class="n">get_gdfs</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">layers</span><span class="p">,</span> <span class="n">radius</span><span class="p">,</span> <span class="n">dilate</span><span class="p">,</span> <span class="o">-</span><span class="n">rotation</span><span class="p">,</span> <span class="n">logging</span><span class="o">=</span><span class="n">logging</span><span class="p">)</span>
|
|
<span class="n">fetch_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">-</span> <span class="n">start_time</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Fetching geodataframes took </span><span class="si">{</span><span class="n">fetch_time</span><span class="si">:</span><span class="s2">.2f</span><span class="si">}</span><span class="s2"> seconds"</span><span class="p">)</span>
|
|
|
|
<span class="c1"># 5. Apply transformations to GeoDataFrames (translation, scale, rotation)</span>
|
|
<span class="n">gdfs</span> <span class="o">=</span> <span class="n">transform_gdfs</span><span class="p">(</span><span class="n">gdfs</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">scale_x</span><span class="p">,</span> <span class="n">scale_y</span><span class="p">,</span> <span class="n">rotation</span><span class="p">,</span> <span class="n">logging</span><span class="o">=</span><span class="n">logging</span><span class="p">)</span>
|
|
|
|
<span class="c1"># 6. Apply a postprocessing function to the GeoDataFrames, if provided</span>
|
|
<span class="n">gdfs</span> <span class="o">=</span> <span class="n">postprocessing</span><span class="p">(</span><span class="n">gdfs</span><span class="p">)</span>
|
|
|
|
<span class="c1"># 7. Create background GeoDataFrame and get (x,y) bounds</span>
|
|
<span class="n">background</span><span class="p">,</span> <span class="n">xmin</span><span class="p">,</span> <span class="n">ymin</span><span class="p">,</span> <span class="n">xmax</span><span class="p">,</span> <span class="n">ymax</span><span class="p">,</span> <span class="n">dx</span><span class="p">,</span> <span class="n">dy</span> <span class="o">=</span> <span class="n">create_background</span><span class="p">(</span>
|
|
<span class="n">gdfs</span><span class="p">,</span> <span class="n">style</span><span class="p">,</span> <span class="n">logging</span><span class="o">=</span><span class="n">logging</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># 8. Draw layers</span>
|
|
<span class="n">draw_layers</span><span class="p">(</span><span class="n">layers</span><span class="p">,</span> <span class="n">gdfs</span><span class="p">,</span> <span class="n">style</span><span class="p">,</span> <span class="n">fig</span><span class="p">,</span> <span class="n">ax</span><span class="p">,</span> <span class="n">vsk</span><span class="p">,</span> <span class="n">mode</span><span class="p">,</span> <span class="n">logging</span><span class="o">=</span><span class="n">logging</span><span class="p">)</span>
|
|
|
|
<span class="c1"># 9. Draw keypoints</span>
|
|
<span class="n">keypoints</span> <span class="o">=</span> <span class="n">draw_keypoints</span><span class="p">(</span><span class="n">keypoints</span><span class="p">,</span> <span class="n">gdfs</span><span class="p">,</span> <span class="n">ax</span><span class="p">,</span> <span class="n">logging</span><span class="o">=</span><span class="n">logging</span><span class="p">)</span>
|
|
|
|
<span class="c1"># 9. Draw background</span>
|
|
<span class="n">draw_background</span><span class="p">(</span><span class="n">background</span><span class="p">,</span> <span class="n">ax</span><span class="p">,</span> <span class="n">style</span><span class="p">,</span> <span class="n">mode</span><span class="p">,</span> <span class="n">logging</span><span class="o">=</span><span class="n">logging</span><span class="p">)</span>
|
|
|
|
<span class="c1"># 10. Draw credit message</span>
|
|
<span class="n">draw_credit</span><span class="p">(</span><span class="n">ax</span><span class="p">,</span> <span class="n">background</span><span class="p">,</span> <span class="n">credit</span><span class="p">,</span> <span class="n">mode</span><span class="p">,</span> <span class="n">multiplot</span><span class="p">,</span> <span class="n">logging</span><span class="o">=</span><span class="n">logging</span><span class="p">)</span>
|
|
|
|
<span class="c1"># 11. Draw hillshade</span>
|
|
<span class="n">draw_hillshade</span><span class="p">(</span>
|
|
<span class="n">layers</span><span class="p">,</span>
|
|
<span class="n">gdfs</span><span class="p">,</span>
|
|
<span class="n">ax</span><span class="p">,</span>
|
|
<span class="n">logging</span><span class="o">=</span><span class="n">logging</span><span class="p">,</span>
|
|
<span class="o">**</span><span class="p">(</span><span class="n">layers</span><span class="p">[</span><span class="s2">"hillshade"</span><span class="p">]</span> <span class="k">if</span> <span class="s2">"hillshade"</span> <span class="ow">in</span> <span class="n">layers</span> <span class="k">else</span> <span class="p">{}),</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># 12. Create Plot object</span>
|
|
<span class="n">plot</span> <span class="o">=</span> <span class="n">Plot</span><span class="p">(</span><span class="n">gdfs</span><span class="p">,</span> <span class="n">fig</span><span class="p">,</span> <span class="n">ax</span><span class="p">,</span> <span class="n">background</span><span class="p">,</span> <span class="n">keypoints</span><span class="p">)</span>
|
|
|
|
<span class="c1"># 13. Save plot as image</span>
|
|
<span class="k">if</span> <span class="n">save_as</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">save_as</span><span class="p">)</span>
|
|
|
|
<span class="c1"># 14. Show plot</span>
|
|
<span class="k">if</span> <span class="n">show</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">mode</span> <span class="o">==</span> <span class="s2">"plotter"</span><span class="p">:</span>
|
|
<span class="n">vsk</span><span class="o">.</span><span class="n">display</span><span class="p">()</span>
|
|
<span class="k">elif</span> <span class="n">mode</span> <span class="o">==</span> <span class="s2">"matplotlib"</span><span class="p">:</span>
|
|
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown mode </span><span class="si">{</span><span class="n">mode</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
|
|
|
<span class="k">return</span> <span class="n">plot</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.draw.plot_gdf" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">plot_gdf</span><span class="p">(</span><span class="n">layer</span><span class="p">,</span> <span class="n">gdf</span><span class="p">,</span> <span class="n">ax</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s1">'matplotlib'</span><span class="p">,</span> <span class="n">vsk</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">palette</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">union</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dilate_points</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dilate_lines</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Plot a layer</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>layer</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="str">str</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>layer name</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>gdf</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="geopandas.GeoDataFrame">GeoDataFrame</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>GeoDataFrame</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>ax</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="matplotlib.axes.Axes">Axes</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>matplotlib axis object</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>mode</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="str">str</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>drawing mode. Options: 'matplotlib', 'vsketch'. Defaults to 'matplotlib'</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>'matplotlib'</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>vsk</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Optional">Optional</span>[<span title="vsketch.SketchClass">SketchClass</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Vsketch object. Mandatory if mode == 'plotter'</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>palette</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Optional">Optional</span>[<span title="typing.List">List</span>[<span title="str">str</span>]]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Color palette. Defaults to None.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>width</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Optional">Optional</span>[<span title="typing.Union">Union</span>[<span title="dict">dict</span>, <span title="float">float</span>]]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Street widths. Either a dictionary or a float. Defaults to None.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>union</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="bool">bool</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Whether to join geometries. Defaults to False.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>False</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>dilate_points</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Optional">Optional</span>[<span title="float">float</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Amount of dilation to be applied to point (1D) geometries. Defaults to None.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>dilate_lines</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Optional">Optional</span>[<span title="float">float</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Amount of dilation to be applied to line (2D) geometries. Defaults to None.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>None</code>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<p><span class="doc-section-title">Raises:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code><span title="Exception">Exception</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p><em>description</em></p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">292</span>
|
|
<span class="normal">293</span>
|
|
<span class="normal">294</span>
|
|
<span class="normal">295</span>
|
|
<span class="normal">296</span>
|
|
<span class="normal">297</span>
|
|
<span class="normal">298</span>
|
|
<span class="normal">299</span>
|
|
<span class="normal">300</span>
|
|
<span class="normal">301</span>
|
|
<span class="normal">302</span>
|
|
<span class="normal">303</span>
|
|
<span class="normal">304</span>
|
|
<span class="normal">305</span>
|
|
<span class="normal">306</span>
|
|
<span class="normal">307</span>
|
|
<span class="normal">308</span>
|
|
<span class="normal">309</span>
|
|
<span class="normal">310</span>
|
|
<span class="normal">311</span>
|
|
<span class="normal">312</span>
|
|
<span class="normal">313</span>
|
|
<span class="normal">314</span>
|
|
<span class="normal">315</span>
|
|
<span class="normal">316</span>
|
|
<span class="normal">317</span>
|
|
<span class="normal">318</span>
|
|
<span class="normal">319</span>
|
|
<span class="normal">320</span>
|
|
<span class="normal">321</span>
|
|
<span class="normal">322</span>
|
|
<span class="normal">323</span>
|
|
<span class="normal">324</span>
|
|
<span class="normal">325</span>
|
|
<span class="normal">326</span>
|
|
<span class="normal">327</span>
|
|
<span class="normal">328</span>
|
|
<span class="normal">329</span>
|
|
<span class="normal">330</span>
|
|
<span class="normal">331</span>
|
|
<span class="normal">332</span>
|
|
<span class="normal">333</span>
|
|
<span class="normal">334</span>
|
|
<span class="normal">335</span>
|
|
<span class="normal">336</span>
|
|
<span class="normal">337</span>
|
|
<span class="normal">338</span>
|
|
<span class="normal">339</span>
|
|
<span class="normal">340</span>
|
|
<span class="normal">341</span>
|
|
<span class="normal">342</span>
|
|
<span class="normal">343</span>
|
|
<span class="normal">344</span>
|
|
<span class="normal">345</span>
|
|
<span class="normal">346</span>
|
|
<span class="normal">347</span>
|
|
<span class="normal">348</span>
|
|
<span class="normal">349</span>
|
|
<span class="normal">350</span>
|
|
<span class="normal">351</span>
|
|
<span class="normal">352</span>
|
|
<span class="normal">353</span>
|
|
<span class="normal">354</span>
|
|
<span class="normal">355</span>
|
|
<span class="normal">356</span>
|
|
<span class="normal">357</span>
|
|
<span class="normal">358</span>
|
|
<span class="normal">359</span>
|
|
<span class="normal">360</span>
|
|
<span class="normal">361</span>
|
|
<span class="normal">362</span>
|
|
<span class="normal">363</span>
|
|
<span class="normal">364</span>
|
|
<span class="normal">365</span>
|
|
<span class="normal">366</span>
|
|
<span class="normal">367</span>
|
|
<span class="normal">368</span>
|
|
<span class="normal">369</span>
|
|
<span class="normal">370</span>
|
|
<span class="normal">371</span>
|
|
<span class="normal">372</span>
|
|
<span class="normal">373</span>
|
|
<span class="normal">374</span>
|
|
<span class="normal">375</span>
|
|
<span class="normal">376</span>
|
|
<span class="normal">377</span>
|
|
<span class="normal">378</span>
|
|
<span class="normal">379</span>
|
|
<span class="normal">380</span>
|
|
<span class="normal">381</span>
|
|
<span class="normal">382</span>
|
|
<span class="normal">383</span>
|
|
<span class="normal">384</span>
|
|
<span class="normal">385</span>
|
|
<span class="normal">386</span>
|
|
<span class="normal">387</span>
|
|
<span class="normal">388</span>
|
|
<span class="normal">389</span>
|
|
<span class="normal">390</span>
|
|
<span class="normal">391</span>
|
|
<span class="normal">392</span>
|
|
<span class="normal">393</span>
|
|
<span class="normal">394</span>
|
|
<span class="normal">395</span>
|
|
<span class="normal">396</span>
|
|
<span class="normal">397</span>
|
|
<span class="normal">398</span>
|
|
<span class="normal">399</span>
|
|
<span class="normal">400</span>
|
|
<span class="normal">401</span>
|
|
<span class="normal">402</span>
|
|
<span class="normal">403</span>
|
|
<span class="normal">404</span>
|
|
<span class="normal">405</span>
|
|
<span class="normal">406</span>
|
|
<span class="normal">407</span>
|
|
<span class="normal">408</span>
|
|
<span class="normal">409</span>
|
|
<span class="normal">410</span>
|
|
<span class="normal">411</span>
|
|
<span class="normal">412</span>
|
|
<span class="normal">413</span>
|
|
<span class="normal">414</span>
|
|
<span class="normal">415</span>
|
|
<span class="normal">416</span>
|
|
<span class="normal">417</span>
|
|
<span class="normal">418</span>
|
|
<span class="normal">419</span>
|
|
<span class="normal">420</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">plot_gdf</span><span class="p">(</span>
|
|
<span class="n">layer</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
|
<span class="n">gdf</span><span class="p">:</span> <span class="n">gp</span><span class="o">.</span><span class="n">GeoDataFrame</span><span class="p">,</span>
|
|
<span class="n">ax</span><span class="p">:</span> <span class="n">matplotlib</span><span class="o">.</span><span class="n">axes</span><span class="o">.</span><span class="n">Axes</span><span class="p">,</span>
|
|
<span class="n">mode</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"matplotlib"</span><span class="p">,</span>
|
|
<span class="c1"># vsk: Optional[vsketch.SketchClass] = None,</span>
|
|
<span class="n">vsk</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">palette</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">width</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="nb">dict</span><span class="p">,</span> <span class="nb">float</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">union</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
|
|
<span class="n">dilate_points</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="n">dilate_lines</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Plot a layer</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> layer (str): layer name</span>
|
|
<span class="sd"> gdf (gp.GeoDataFrame): GeoDataFrame</span>
|
|
<span class="sd"> ax (matplotlib.axes.Axes): matplotlib axis object</span>
|
|
<span class="sd"> mode (str): drawing mode. Options: 'matplotlib', 'vsketch'. Defaults to 'matplotlib'</span>
|
|
<span class="sd"> vsk (Optional[vsketch.SketchClass]): Vsketch object. Mandatory if mode == 'plotter'</span>
|
|
<span class="sd"> palette (Optional[List[str]], optional): Color palette. Defaults to None.</span>
|
|
<span class="sd"> width (Optional[Union[dict, float]], optional): Street widths. Either a dictionary or a float. Defaults to None.</span>
|
|
<span class="sd"> union (bool, optional): Whether to join geometries. Defaults to False.</span>
|
|
<span class="sd"> dilate_points (Optional[float], optional): Amount of dilation to be applied to point (1D) geometries. Defaults to None.</span>
|
|
<span class="sd"> dilate_lines (Optional[float], optional): Amount of dilation to be applied to line (2D) geometries. Defaults to None.</span>
|
|
|
|
<span class="sd"> Raises:</span>
|
|
<span class="sd"> Exception: _description_</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="c1"># Get hatch and hatch_c parameter</span>
|
|
<span class="n">hatch_c</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"hatch_c"</span><span class="p">)</span> <span class="k">if</span> <span class="s2">"hatch_c"</span> <span class="ow">in</span> <span class="n">kwargs</span> <span class="k">else</span> <span class="kc">None</span>
|
|
|
|
<span class="c1"># Convert GDF to shapely geometries</span>
|
|
<span class="n">geometries</span> <span class="o">=</span> <span class="n">gdf_to_shapely</span><span class="p">(</span>
|
|
<span class="n">layer</span><span class="p">,</span> <span class="n">gdf</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">point_size</span><span class="o">=</span><span class="n">dilate_points</span><span class="p">,</span> <span class="n">line_width</span><span class="o">=</span><span class="n">dilate_lines</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># Unite geometries</span>
|
|
<span class="k">if</span> <span class="n">union</span><span class="p">:</span>
|
|
<span class="n">geometries</span> <span class="o">=</span> <span class="n">shapely</span><span class="o">.</span><span class="n">ops</span><span class="o">.</span><span class="n">unary_union</span><span class="p">(</span><span class="n">GeometryCollection</span><span class="p">([</span><span class="n">geometries</span><span class="p">]))</span>
|
|
|
|
<span class="k">if</span> <span class="p">(</span><span class="n">palette</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="s2">"fc"</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">kwargs</span><span class="p">[</span><span class="s2">"fc"</span><span class="p">])</span> <span class="o">!=</span> <span class="nb">str</span><span class="p">):</span>
|
|
<span class="n">palette</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"fc"</span><span class="p">)</span>
|
|
|
|
<span class="k">for</span> <span class="n">shape</span> <span class="ow">in</span> <span class="n">geometries</span><span class="o">.</span><span class="n">geoms</span> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">geometries</span><span class="p">,</span> <span class="s2">"geoms"</span><span class="p">)</span> <span class="k">else</span> <span class="p">[</span><span class="n">geometries</span><span class="p">]:</span>
|
|
<span class="k">if</span> <span class="n">mode</span> <span class="o">==</span> <span class="s2">"matplotlib"</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">shape</span><span class="p">)</span> <span class="ow">in</span> <span class="p">[</span><span class="n">Polygon</span><span class="p">,</span> <span class="n">MultiPolygon</span><span class="p">]:</span>
|
|
<span class="c1"># Plot main shape (without silhouette)</span>
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">add_patch</span><span class="p">(</span>
|
|
<span class="n">PolygonPatch</span><span class="p">(</span>
|
|
<span class="n">shape</span><span class="p">,</span>
|
|
<span class="n">lw</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
|
|
<span class="n">ec</span><span class="o">=</span><span class="p">(</span>
|
|
<span class="n">hatch_c</span>
|
|
<span class="k">if</span> <span class="n">hatch_c</span>
|
|
<span class="k">else</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"ec"</span><span class="p">]</span> <span class="k">if</span> <span class="s2">"ec"</span> <span class="ow">in</span> <span class="n">kwargs</span> <span class="k">else</span> <span class="kc">None</span>
|
|
<span class="p">),</span>
|
|
<span class="n">fc</span><span class="o">=</span><span class="p">(</span>
|
|
<span class="n">kwargs</span><span class="p">[</span><span class="s2">"fc"</span><span class="p">]</span>
|
|
<span class="k">if</span> <span class="s2">"fc"</span> <span class="ow">in</span> <span class="n">kwargs</span>
|
|
<span class="k">else</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="n">palette</span><span class="p">)</span> <span class="k">if</span> <span class="n">palette</span> <span class="k">else</span> <span class="kc">None</span>
|
|
<span class="p">),</span>
|
|
<span class="o">**</span><span class="p">{</span>
|
|
<span class="n">k</span><span class="p">:</span> <span class="n">v</span>
|
|
<span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
|
<span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"lw"</span><span class="p">,</span> <span class="s2">"ec"</span><span class="p">,</span> <span class="s2">"fc"</span><span class="p">]</span>
|
|
<span class="p">},</span>
|
|
<span class="p">),</span>
|
|
<span class="p">)</span>
|
|
<span class="c1"># Plot just silhouette</span>
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">add_patch</span><span class="p">(</span>
|
|
<span class="n">PolygonPatch</span><span class="p">(</span>
|
|
<span class="n">shape</span><span class="p">,</span>
|
|
<span class="n">fill</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
<span class="o">**</span><span class="p">{</span>
|
|
<span class="n">k</span><span class="p">:</span> <span class="n">v</span>
|
|
<span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
|
<span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"hatch"</span><span class="p">,</span> <span class="s2">"fill"</span><span class="p">]</span>
|
|
<span class="p">},</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="k">elif</span> <span class="nb">type</span><span class="p">(</span><span class="n">shape</span><span class="p">)</span> <span class="o">==</span> <span class="n">LineString</span><span class="p">:</span>
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span>
|
|
<span class="o">*</span><span class="n">shape</span><span class="o">.</span><span class="n">xy</span><span class="p">,</span>
|
|
<span class="n">c</span><span class="o">=</span><span class="n">kwargs</span><span class="p">[</span><span class="s2">"ec"</span><span class="p">]</span> <span class="k">if</span> <span class="s2">"ec"</span> <span class="ow">in</span> <span class="n">kwargs</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">**</span><span class="p">{</span>
|
|
<span class="n">k</span><span class="p">:</span> <span class="n">v</span>
|
|
<span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
|
<span class="k">if</span> <span class="n">k</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"lw"</span><span class="p">,</span> <span class="s2">"ls"</span><span class="p">,</span> <span class="s2">"dashes"</span><span class="p">,</span> <span class="s2">"zorder"</span><span class="p">]</span>
|
|
<span class="p">},</span>
|
|
<span class="p">)</span>
|
|
<span class="k">elif</span> <span class="nb">type</span><span class="p">(</span><span class="n">shape</span><span class="p">)</span> <span class="o">==</span> <span class="n">MultiLineString</span><span class="p">:</span>
|
|
<span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">shape</span><span class="o">.</span><span class="n">geoms</span><span class="p">:</span>
|
|
<span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span>
|
|
<span class="o">*</span><span class="n">c</span><span class="o">.</span><span class="n">xy</span><span class="p">,</span>
|
|
<span class="n">c</span><span class="o">=</span><span class="n">kwargs</span><span class="p">[</span><span class="s2">"ec"</span><span class="p">]</span> <span class="k">if</span> <span class="s2">"ec"</span> <span class="ow">in</span> <span class="n">kwargs</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span>
|
|
<span class="o">**</span><span class="p">{</span>
|
|
<span class="n">k</span><span class="p">:</span> <span class="n">v</span>
|
|
<span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
|
<span class="k">if</span> <span class="n">k</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"lw"</span><span class="p">,</span> <span class="s2">"lt"</span><span class="p">,</span> <span class="s2">"dashes"</span><span class="p">,</span> <span class="s2">"zorder"</span><span class="p">]</span>
|
|
<span class="p">},</span>
|
|
<span class="p">)</span>
|
|
<span class="k">elif</span> <span class="n">mode</span> <span class="o">==</span> <span class="s2">"plotter"</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="p">(</span><span class="s2">"draw"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">)</span> <span class="ow">or</span> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"draw"</span><span class="p">]:</span>
|
|
|
|
<span class="c1"># Set stroke</span>
|
|
<span class="k">if</span> <span class="s2">"stroke"</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
|
<span class="n">vsk</span><span class="o">.</span><span class="n">stroke</span><span class="p">(</span><span class="n">kwargs</span><span class="p">[</span><span class="s2">"stroke"</span><span class="p">])</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">vsk</span><span class="o">.</span><span class="n">stroke</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Set pen width</span>
|
|
<span class="k">if</span> <span class="s2">"penWidth"</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
|
<span class="n">vsk</span><span class="o">.</span><span class="n">penWidth</span><span class="p">(</span><span class="n">kwargs</span><span class="p">[</span><span class="s2">"penWidth"</span><span class="p">])</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">vsk</span><span class="o">.</span><span class="n">penWidth</span><span class="p">(</span><span class="mf">0.3</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="s2">"fill"</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="p">:</span>
|
|
<span class="n">vsk</span><span class="o">.</span><span class="n">fill</span><span class="p">(</span><span class="n">kwargs</span><span class="p">[</span><span class="s2">"fill"</span><span class="p">])</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">vsk</span><span class="o">.</span><span class="n">noFill</span><span class="p">()</span>
|
|
|
|
<span class="n">vsk</span><span class="o">.</span><span class="n">geometry</span><span class="p">(</span><span class="n">shape</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown mode </span><span class="si">{</span><span class="n">mode</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.draw.presets_directory" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">presets_directory</span><span class="p">()</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Returns the path to the 'presets' directory.
|
|
This function constructs the path to the 'presets' directory, which is
|
|
located in the same directory as the current script file.
|
|
Returns:
|
|
str: The full path to the 'presets' directory.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">698</span>
|
|
<span class="normal">699</span>
|
|
<span class="normal">700</span>
|
|
<span class="normal">701</span>
|
|
<span class="normal">702</span>
|
|
<span class="normal">703</span>
|
|
<span class="normal">704</span>
|
|
<span class="normal">705</span>
|
|
<span class="normal">706</span>
|
|
<span class="normal">707</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">presets_directory</span><span class="p">():</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Returns the path to the 'presets' directory.</span>
|
|
<span class="sd"> This function constructs the path to the 'presets' directory, which is</span>
|
|
<span class="sd"> located in the same directory as the current script file.</span>
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> str: The full path to the 'presets' directory.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="k">return</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">pathlib</span><span class="o">.</span><span class="n">Path</span><span class="p">(</span><span class="vm">__file__</span><span class="p">)</span><span class="o">.</span><span class="n">resolve</span><span class="p">()</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="s2">"presets"</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.draw.read_preset" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">read_preset</span><span class="p">(</span><span class="n">name</span><span class="p">)</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Read a preset from the presets folder (prettymaps/presets/)</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>name</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="str">str</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Preset name</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="dict">dict</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>parameters dictionary</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">748</span>
|
|
<span class="normal">749</span>
|
|
<span class="normal">750</span>
|
|
<span class="normal">751</span>
|
|
<span class="normal">752</span>
|
|
<span class="normal">753</span>
|
|
<span class="normal">754</span>
|
|
<span class="normal">755</span>
|
|
<span class="normal">756</span>
|
|
<span class="normal">757</span>
|
|
<span class="normal">758</span>
|
|
<span class="normal">759</span>
|
|
<span class="normal">760</span>
|
|
<span class="normal">761</span>
|
|
<span class="normal">762</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">read_preset</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">dict</span><span class="p">]:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Read a preset from the presets folder (prettymaps/presets/)</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> name (str): Preset name</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> (Dict[str,dict]): parameters dictionary</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">presets_directory</span><span class="p">(),</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">.json"</span><span class="p">)</span>
|
|
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s2">"r"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
|
<span class="c1"># Load params from JSON file</span>
|
|
<span class="n">params</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">params</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.draw.transform_gdfs" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">transform_gdfs</span><span class="p">(</span><span class="n">gdfs</span><span class="p">,</span> <span class="n">x</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">scale_x</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">scale_y</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">logging</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Apply geometric transformations to dictionary of GeoDataFrames</p>
|
|
|
|
|
|
<p><span class="doc-section-title">Parameters:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Default</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>gdfs</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="geopandas.GeoDataFrame">GeoDataFrame</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Dictionary of GeoDataFrames</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<em>required</em>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>x</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="float">float</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>x-axis translation. Defaults to 0.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>0</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>y</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="float">float</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>y-axis translation. Defaults to 0.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>0</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>scale_x</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="float">float</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>x-axis scale. Defaults to 1.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>1</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>scale_y</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="float">float</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>y-axis scale. Defaults to 1.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>1</code>
|
|
</td>
|
|
</tr>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code>rotation</code>
|
|
</td>
|
|
<td>
|
|
<code><span title="float">float</span></code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>rotation angle (in radians). Defaults to 0.</p>
|
|
</div>
|
|
</td>
|
|
<td>
|
|
<code>0</code>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<p><span class="doc-section-title">Returns:</span></p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="doc-section-item">
|
|
<td>
|
|
<code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="geopandas.GeoDataFrame">GeoDataFrame</span>]</code>
|
|
</td>
|
|
<td>
|
|
<div class="doc-md-description">
|
|
<p>Dict[str, gp.GeoDataFrame]: dictionary of transformed GeoDataFrames</p>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/draw.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">647</span>
|
|
<span class="normal">648</span>
|
|
<span class="normal">649</span>
|
|
<span class="normal">650</span>
|
|
<span class="normal">651</span>
|
|
<span class="normal">652</span>
|
|
<span class="normal">653</span>
|
|
<span class="normal">654</span>
|
|
<span class="normal">655</span>
|
|
<span class="normal">656</span>
|
|
<span class="normal">657</span>
|
|
<span class="normal">658</span>
|
|
<span class="normal">659</span>
|
|
<span class="normal">660</span>
|
|
<span class="normal">661</span>
|
|
<span class="normal">662</span>
|
|
<span class="normal">663</span>
|
|
<span class="normal">664</span>
|
|
<span class="normal">665</span>
|
|
<span class="normal">666</span>
|
|
<span class="normal">667</span>
|
|
<span class="normal">668</span>
|
|
<span class="normal">669</span>
|
|
<span class="normal">670</span>
|
|
<span class="normal">671</span>
|
|
<span class="normal">672</span>
|
|
<span class="normal">673</span>
|
|
<span class="normal">674</span>
|
|
<span class="normal">675</span>
|
|
<span class="normal">676</span>
|
|
<span class="normal">677</span>
|
|
<span class="normal">678</span>
|
|
<span class="normal">679</span>
|
|
<span class="normal">680</span>
|
|
<span class="normal">681</span>
|
|
<span class="normal">682</span>
|
|
<span class="normal">683</span>
|
|
<span class="normal">684</span>
|
|
<span class="normal">685</span>
|
|
<span class="normal">686</span>
|
|
<span class="normal">687</span>
|
|
<span class="normal">688</span>
|
|
<span class="normal">689</span>
|
|
<span class="normal">690</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="nd">@log_execution_time</span>
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">transform_gdfs</span><span class="p">(</span>
|
|
<span class="n">gdfs</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">gp</span><span class="o">.</span><span class="n">GeoDataFrame</span><span class="p">],</span>
|
|
<span class="n">x</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
|
|
<span class="n">y</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
|
|
<span class="n">scale_x</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
|
|
<span class="n">scale_y</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
|
|
<span class="n">rotation</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
|
|
<span class="n">logging</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">gp</span><span class="o">.</span><span class="n">GeoDataFrame</span><span class="p">]:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Apply geometric transformations to dictionary of GeoDataFrames</span>
|
|
|
|
<span class="sd"> Args:</span>
|
|
<span class="sd"> gdfs (Dict[str, gp.GeoDataFrame]): Dictionary of GeoDataFrames</span>
|
|
<span class="sd"> x (float, optional): x-axis translation. Defaults to 0.</span>
|
|
<span class="sd"> y (float, optional): y-axis translation. Defaults to 0.</span>
|
|
<span class="sd"> scale_x (float, optional): x-axis scale. Defaults to 1.</span>
|
|
<span class="sd"> scale_y (float, optional): y-axis scale. Defaults to 1.</span>
|
|
<span class="sd"> rotation (float, optional): rotation angle (in radians). Defaults to 0.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> Dict[str, gp.GeoDataFrame]: dictionary of transformed GeoDataFrames</span>
|
|
<span class="sd"> """</span>
|
|
<span class="c1"># Project geometries</span>
|
|
<span class="n">gdfs</span> <span class="o">=</span> <span class="p">{</span>
|
|
<span class="n">name</span><span class="p">:</span> <span class="n">ox</span><span class="o">.</span><span class="n">projection</span><span class="o">.</span><span class="n">project_gdf</span><span class="p">(</span><span class="n">gdf</span><span class="p">)</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">gdf</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span> <span class="k">else</span> <span class="n">gdf</span> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">gdf</span> <span class="ow">in</span> <span class="n">gdfs</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
|
<span class="p">}</span>
|
|
<span class="c1"># Create geometry collection from gdfs' geometries</span>
|
|
<span class="n">collection</span> <span class="o">=</span> <span class="n">GeometryCollection</span><span class="p">(</span>
|
|
<span class="p">[</span><span class="n">GeometryCollection</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">gdf</span><span class="o">.</span><span class="n">geometry</span><span class="p">))</span> <span class="k">for</span> <span class="n">gdf</span> <span class="ow">in</span> <span class="n">gdfs</span><span class="o">.</span><span class="n">values</span><span class="p">()]</span>
|
|
<span class="p">)</span>
|
|
<span class="c1"># Translation, scale & rotation</span>
|
|
<span class="n">collection</span> <span class="o">=</span> <span class="n">shapely</span><span class="o">.</span><span class="n">affinity</span><span class="o">.</span><span class="n">translate</span><span class="p">(</span><span class="n">collection</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
|
|
<span class="n">collection</span> <span class="o">=</span> <span class="n">shapely</span><span class="o">.</span><span class="n">affinity</span><span class="o">.</span><span class="n">scale</span><span class="p">(</span><span class="n">collection</span><span class="p">,</span> <span class="n">scale_x</span><span class="p">,</span> <span class="n">scale_y</span><span class="p">)</span>
|
|
<span class="n">collection</span> <span class="o">=</span> <span class="n">shapely</span><span class="o">.</span><span class="n">affinity</span><span class="o">.</span><span class="n">rotate</span><span class="p">(</span><span class="n">collection</span><span class="p">,</span> <span class="n">rotation</span><span class="p">)</span>
|
|
<span class="c1"># Update geometries</span>
|
|
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">layer</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">gdfs</span><span class="p">):</span>
|
|
<span class="n">gdfs</span><span class="p">[</span><span class="n">layer</span><span class="p">]</span><span class="o">.</span><span class="n">geometry</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">collection</span><span class="o">.</span><span class="n">geoms</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">geoms</span><span class="p">)</span>
|
|
<span class="c1"># Reproject</span>
|
|
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">gdfs</span><span class="p">[</span><span class="n">layer</span><span class="p">])</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
|
<span class="n">gdfs</span><span class="p">[</span><span class="n">layer</span><span class="p">]</span> <span class="o">=</span> <span class="n">ox</span><span class="o">.</span><span class="n">projection</span><span class="o">.</span><span class="n">project_gdf</span><span class="p">(</span><span class="n">gdfs</span><span class="p">[</span><span class="n">layer</span><span class="p">],</span> <span class="n">to_crs</span><span class="o">=</span><span class="s2">"EPSG:4326"</span><span class="p">)</span>
|
|
|
|
<span class="k">return</span> <span class="n">gdfs</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-module">
|
|
|
|
|
|
|
|
<h2 id="prettymaps.fetch" class="doc doc-heading">
|
|
<code>prettymaps.fetch</code>
|
|
|
|
|
|
</h2>
|
|
|
|
<div class="doc doc-contents first">
|
|
|
|
<p>Prettymaps - A minimal Python library to draw pretty maps from OpenStreetMap Data
|
|
Copyright (C) 2021 Marcelo Prates</p>
|
|
<p>This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU Affero General Public License as published
|
|
by the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.</p>
|
|
<p>This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU Affero General Public License for more details.</p>
|
|
<p>You should have received a copy of the GNU Affero General Public License
|
|
along with this program. If not, see <a href="https://www.gnu.org/licenses/">https://www.gnu.org/licenses/</a>.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-children">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.fetch.get_keypoints" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">get_keypoints</span><span class="p">(</span><span class="n">perimeter</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="p">{</span><span class="s1">'place'</span><span class="p">:</span> <span class="s1">'quarter'</span><span class="p">,</span> <span class="s1">'highway'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'building'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'landuse'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'natural'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'waterway'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'amenity'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'leisure'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'shop'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'public_transport'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'tourism'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'historic'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'barrier'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'power'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'railway'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'cycleway'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'footway'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'healthcare'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'office'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'craft'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'man_made'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s1">'boundary'</span><span class="p">:</span> <span class="kc">True</span><span class="p">})</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Extract keypoints from a given perimeter based on specified tags.</p>
|
|
<p>Parameters:
|
|
perimeter (shapely.geometry.Polygon): The polygon representing the area of interest.
|
|
tags (dict, optional): A dictionary of tags to filter the keypoints. The keys are tag names and the values are booleans indicating whether to include the tag. Default includes a variety of common tags.</p>
|
|
<p>Returns:
|
|
geopandas.GeoDataFrame: A GeoDataFrame containing the keypoints that match the specified tags within the given perimeter.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/fetch.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 61</span>
|
|
<span class="normal"> 62</span>
|
|
<span class="normal"> 63</span>
|
|
<span class="normal"> 64</span>
|
|
<span class="normal"> 65</span>
|
|
<span class="normal"> 66</span>
|
|
<span class="normal"> 67</span>
|
|
<span class="normal"> 68</span>
|
|
<span class="normal"> 69</span>
|
|
<span class="normal"> 70</span>
|
|
<span class="normal"> 71</span>
|
|
<span class="normal"> 72</span>
|
|
<span class="normal"> 73</span>
|
|
<span class="normal"> 74</span>
|
|
<span class="normal"> 75</span>
|
|
<span class="normal"> 76</span>
|
|
<span class="normal"> 77</span>
|
|
<span class="normal"> 78</span>
|
|
<span class="normal"> 79</span>
|
|
<span class="normal"> 80</span>
|
|
<span class="normal"> 81</span>
|
|
<span class="normal"> 82</span>
|
|
<span class="normal"> 83</span>
|
|
<span class="normal"> 84</span>
|
|
<span class="normal"> 85</span>
|
|
<span class="normal"> 86</span>
|
|
<span class="normal"> 87</span>
|
|
<span class="normal"> 88</span>
|
|
<span class="normal"> 89</span>
|
|
<span class="normal"> 90</span>
|
|
<span class="normal"> 91</span>
|
|
<span class="normal"> 92</span>
|
|
<span class="normal"> 93</span>
|
|
<span class="normal"> 94</span>
|
|
<span class="normal"> 95</span>
|
|
<span class="normal"> 96</span>
|
|
<span class="normal"> 97</span>
|
|
<span class="normal"> 98</span>
|
|
<span class="normal"> 99</span>
|
|
<span class="normal">100</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">get_keypoints</span><span class="p">(</span>
|
|
<span class="n">perimeter</span><span class="p">,</span>
|
|
<span class="n">tags</span><span class="o">=</span><span class="p">{</span>
|
|
<span class="s2">"place"</span><span class="p">:</span> <span class="s2">"quarter"</span><span class="p">,</span>
|
|
<span class="s2">"highway"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="s2">"building"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="s2">"landuse"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="s2">"natural"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="s2">"waterway"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="s2">"amenity"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="s2">"leisure"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="s2">"shop"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="s2">"public_transport"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="s2">"tourism"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="s2">"historic"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="s2">"barrier"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="s2">"power"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="s2">"railway"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="s2">"cycleway"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="s2">"footway"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="s2">"healthcare"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="s2">"office"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="s2">"craft"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="s2">"man_made"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="s2">"boundary"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
|
<span class="p">},</span>
|
|
<span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Extract keypoints from a given perimeter based on specified tags.</span>
|
|
|
|
<span class="sd"> Parameters:</span>
|
|
<span class="sd"> perimeter (shapely.geometry.Polygon): The polygon representing the area of interest.</span>
|
|
<span class="sd"> tags (dict, optional): A dictionary of tags to filter the keypoints. The keys are tag names and the values are booleans indicating whether to include the tag. Default includes a variety of common tags.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> geopandas.GeoDataFrame: A GeoDataFrame containing the keypoints that match the specified tags within the given perimeter.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">keypoints_df</span> <span class="o">=</span> <span class="n">ox</span><span class="o">.</span><span class="n">features</span><span class="o">.</span><span class="n">features_from_polygon</span><span class="p">(</span><span class="n">perimeter</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="n">tags</span><span class="p">)</span>
|
|
|
|
<span class="k">return</span> <span class="n">keypoints_df</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.fetch.merge_tags" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">merge_tags</span><span class="p">(</span><span class="n">layers_dict</span><span class="p">)</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Merge tags from a dictionary of layers into a single dictionary.</p>
|
|
<p>Parameters:
|
|
layers_dict (dict): Dictionary of layers with their respective tags.</p>
|
|
<p>Returns:
|
|
dict: Merged dictionary of tags.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/fetch.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">522</span>
|
|
<span class="normal">523</span>
|
|
<span class="normal">524</span>
|
|
<span class="normal">525</span>
|
|
<span class="normal">526</span>
|
|
<span class="normal">527</span>
|
|
<span class="normal">528</span>
|
|
<span class="normal">529</span>
|
|
<span class="normal">530</span>
|
|
<span class="normal">531</span>
|
|
<span class="normal">532</span>
|
|
<span class="normal">533</span>
|
|
<span class="normal">534</span>
|
|
<span class="normal">535</span>
|
|
<span class="normal">536</span>
|
|
<span class="normal">537</span>
|
|
<span class="normal">538</span>
|
|
<span class="normal">539</span>
|
|
<span class="normal">540</span>
|
|
<span class="normal">541</span>
|
|
<span class="normal">542</span>
|
|
<span class="normal">543</span>
|
|
<span class="normal">544</span>
|
|
<span class="normal">545</span>
|
|
<span class="normal">546</span>
|
|
<span class="normal">547</span>
|
|
<span class="normal">548</span>
|
|
<span class="normal">549</span>
|
|
<span class="normal">550</span>
|
|
<span class="normal">551</span>
|
|
<span class="normal">552</span>
|
|
<span class="normal">553</span>
|
|
<span class="normal">554</span>
|
|
<span class="normal">555</span>
|
|
<span class="normal">556</span>
|
|
<span class="normal">557</span>
|
|
<span class="normal">558</span>
|
|
<span class="normal">559</span>
|
|
<span class="normal">560</span>
|
|
<span class="normal">561</span>
|
|
<span class="normal">562</span>
|
|
<span class="normal">563</span>
|
|
<span class="normal">564</span>
|
|
<span class="normal">565</span>
|
|
<span class="normal">566</span>
|
|
<span class="normal">567</span>
|
|
<span class="normal">568</span>
|
|
<span class="normal">569</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">merge_tags</span><span class="p">(</span><span class="n">layers_dict</span><span class="p">:</span> <span class="nb">dict</span><span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Merge tags from a dictionary of layers into a single dictionary.</span>
|
|
|
|
<span class="sd"> Parameters:</span>
|
|
<span class="sd"> layers_dict (dict): Dictionary of layers with their respective tags.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> dict: Merged dictionary of tags.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="n">layers_dict</span> <span class="o">=</span> <span class="n">deepcopy</span><span class="p">(</span><span class="n">layers_dict</span><span class="p">)</span>
|
|
<span class="n">merged_tags</span> <span class="o">=</span> <span class="p">{}</span>
|
|
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">_merge</span><span class="p">(</span><span class="n">d</span><span class="p">:</span> <span class="nb">dict</span><span class="p">):</span>
|
|
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">d</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="s2">"tags"</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span>
|
|
<span class="k">for</span> <span class="n">tag_key</span><span class="p">,</span> <span class="n">tag_value</span> <span class="ow">in</span> <span class="n">value</span><span class="p">[</span><span class="s2">"tags"</span><span class="p">]</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
<span class="k">if</span> <span class="n">tag_key</span> <span class="ow">in</span> <span class="n">merged_tags</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">merged_tags</span><span class="p">[</span><span class="n">tag_key</span><span class="p">],</span> <span class="nb">list</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">tag_value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
|
|
<span class="n">merged_tags</span><span class="p">[</span><span class="n">tag_key</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">tag_value</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">merged_tags</span><span class="p">[</span><span class="n">tag_key</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tag_value</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">merged_tags</span><span class="p">[</span><span class="n">tag_key</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="p">[</span><span class="n">merged_tags</span><span class="p">[</span><span class="n">tag_key</span><span class="p">],</span> <span class="n">tag_value</span><span class="p">]</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">tag_value</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span>
|
|
<span class="k">else</span> <span class="p">[</span><span class="n">merged_tags</span><span class="p">[</span><span class="n">tag_key</span><span class="p">]]</span> <span class="o">+</span> <span class="n">tag_value</span>
|
|
<span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">merged_tags</span><span class="p">[</span><span class="n">tag_key</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span>
|
|
<span class="n">tag_value</span>
|
|
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">tag_value</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span>
|
|
<span class="k">else</span> <span class="p">[</span><span class="n">tag_value</span><span class="p">]</span>
|
|
<span class="p">)</span>
|
|
<span class="n">_merge</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
|
|
<span class="n">_merge</span><span class="p">(</span><span class="n">layers_dict</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Simplify lists with a single element</span>
|
|
<span class="n">merged_tags</span> <span class="o">=</span> <span class="p">{</span>
|
|
<span class="n">k</span><span class="p">:</span> <span class="p">(</span><span class="n">v</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="k">else</span> <span class="n">v</span><span class="p">)</span>
|
|
<span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">merged_tags</span><span class="o">.</span><span class="n">items</span><span class="p">()</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="k">return</span> <span class="n">merged_tags</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.fetch.obtain_elevation" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">obtain_elevation</span><span class="p">(</span><span class="n">gdf</span><span class="p">)</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Download all SRTM elevation tiles for the given polygon in a GeoDataFrame.</p>
|
|
<p>Parameters:
|
|
gdf (GeoDataFrame): GeoDataFrame containing the polygon.
|
|
output_dir (str): Directory to save the downloaded tiles.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/fetch.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">103</span>
|
|
<span class="normal">104</span>
|
|
<span class="normal">105</span>
|
|
<span class="normal">106</span>
|
|
<span class="normal">107</span>
|
|
<span class="normal">108</span>
|
|
<span class="normal">109</span>
|
|
<span class="normal">110</span>
|
|
<span class="normal">111</span>
|
|
<span class="normal">112</span>
|
|
<span class="normal">113</span>
|
|
<span class="normal">114</span>
|
|
<span class="normal">115</span>
|
|
<span class="normal">116</span>
|
|
<span class="normal">117</span>
|
|
<span class="normal">118</span>
|
|
<span class="normal">119</span>
|
|
<span class="normal">120</span>
|
|
<span class="normal">121</span>
|
|
<span class="normal">122</span>
|
|
<span class="normal">123</span>
|
|
<span class="normal">124</span>
|
|
<span class="normal">125</span>
|
|
<span class="normal">126</span>
|
|
<span class="normal">127</span>
|
|
<span class="normal">128</span>
|
|
<span class="normal">129</span>
|
|
<span class="normal">130</span>
|
|
<span class="normal">131</span>
|
|
<span class="normal">132</span>
|
|
<span class="normal">133</span>
|
|
<span class="normal">134</span>
|
|
<span class="normal">135</span>
|
|
<span class="normal">136</span>
|
|
<span class="normal">137</span>
|
|
<span class="normal">138</span>
|
|
<span class="normal">139</span>
|
|
<span class="normal">140</span>
|
|
<span class="normal">141</span>
|
|
<span class="normal">142</span>
|
|
<span class="normal">143</span>
|
|
<span class="normal">144</span>
|
|
<span class="normal">145</span>
|
|
<span class="normal">146</span>
|
|
<span class="normal">147</span>
|
|
<span class="normal">148</span>
|
|
<span class="normal">149</span>
|
|
<span class="normal">150</span>
|
|
<span class="normal">151</span>
|
|
<span class="normal">152</span>
|
|
<span class="normal">153</span>
|
|
<span class="normal">154</span>
|
|
<span class="normal">155</span>
|
|
<span class="normal">156</span>
|
|
<span class="normal">157</span>
|
|
<span class="normal">158</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">obtain_elevation</span><span class="p">(</span><span class="n">gdf</span><span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Download all SRTM elevation tiles for the given polygon in a GeoDataFrame.</span>
|
|
|
|
<span class="sd"> Parameters:</span>
|
|
<span class="sd"> gdf (GeoDataFrame): GeoDataFrame containing the polygon.</span>
|
|
<span class="sd"> output_dir (str): Directory to save the downloaded tiles.</span>
|
|
<span class="sd"> """</span>
|
|
|
|
<span class="c1"># Ensure the GeoDataFrame has a single polygon</span>
|
|
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">gdf</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"GeoDataFrame must contain a single polygon"</span><span class="p">)</span>
|
|
|
|
<span class="k">with</span> <span class="n">warnings</span><span class="o">.</span><span class="n">catch_warnings</span><span class="p">():</span>
|
|
<span class="n">warnings</span><span class="o">.</span><span class="n">simplefilter</span><span class="p">(</span><span class="s2">"ignore"</span><span class="p">)</span>
|
|
<span class="n">subprocess</span><span class="o">.</span><span class="n">run</span><span class="p">(</span>
|
|
<span class="p">[</span><span class="s2">"eio"</span><span class="p">,</span> <span class="s2">"clean"</span><span class="p">],</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">DEVNULL</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">DEVNULL</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># Get the bounding box of the polygon</span>
|
|
<span class="n">bounds</span> <span class="o">=</span> <span class="n">gdf</span><span class="o">.</span><span class="n">total_bounds</span>
|
|
<span class="n">min_lon</span><span class="p">,</span> <span class="n">min_lat</span><span class="p">,</span> <span class="n">max_lon</span><span class="p">,</span> <span class="n">max_lat</span> <span class="o">=</span> <span class="n">bounds</span>
|
|
|
|
<span class="c1"># Configure the bounding box for the elevation library</span>
|
|
|
|
<span class="n">output_file</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getcwd</span><span class="p">(),</span> <span class="s2">"elevation.tif"</span><span class="p">)</span>
|
|
<span class="n">elevation</span><span class="o">.</span><span class="n">clip</span><span class="p">(</span>
|
|
<span class="n">bounds</span><span class="o">=</span><span class="p">(</span><span class="n">min_lon</span><span class="p">,</span> <span class="n">min_lat</span><span class="p">,</span> <span class="n">max_lon</span><span class="p">,</span> <span class="n">max_lat</span><span class="p">),</span>
|
|
<span class="n">output</span><span class="o">=</span><span class="n">output_file</span><span class="p">,</span>
|
|
<span class="n">margin</span><span class="o">=</span><span class="s2">"10%"</span><span class="p">,</span>
|
|
<span class="n">cache_dir</span><span class="o">=</span><span class="s2">"."</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># subprocess.run(</span>
|
|
<span class="c1"># [</span>
|
|
<span class="c1"># "gdalwarp",</span>
|
|
<span class="c1"># "-tr",</span>
|
|
<span class="c1"># "30",</span>
|
|
<span class="c1"># "30",</span>
|
|
<span class="c1"># "-r",</span>
|
|
<span class="c1"># "cubic",</span>
|
|
<span class="c1"># "elevation.tif",</span>
|
|
<span class="c1"># "resampled_elevation.tif",</span>
|
|
<span class="c1"># ],</span>
|
|
<span class="c1"># # stdout=subprocess.DEVNULL,</span>
|
|
<span class="c1"># # stderr=subprocess.DEVNULL,</span>
|
|
<span class="c1"># )</span>
|
|
|
|
<span class="n">raster</span> <span class="o">=</span> <span class="n">rxr</span><span class="o">.</span><span class="n">open_rasterio</span><span class="p">(</span><span class="n">output_file</span><span class="p">)</span><span class="o">.</span><span class="n">squeeze</span><span class="p">()</span>
|
|
|
|
<span class="n">raster</span> <span class="o">=</span> <span class="n">raster</span><span class="o">.</span><span class="n">rio</span><span class="o">.</span><span class="n">reproject</span><span class="p">(</span><span class="n">CRS</span><span class="o">.</span><span class="n">from_string</span><span class="p">(</span><span class="n">ox</span><span class="o">.</span><span class="n">projection</span><span class="o">.</span><span class="n">project_gdf</span><span class="p">(</span><span class="n">gdf</span><span class="p">)</span><span class="o">.</span><span class="n">crs</span><span class="o">.</span><span class="n">to_string</span><span class="p">()))</span>
|
|
|
|
<span class="c1"># convert to numpy array</span>
|
|
<span class="n">elevation_data</span> <span class="o">=</span> <span class="n">raster</span><span class="o">.</span><span class="n">data</span>
|
|
|
|
<span class="k">return</span> <span class="n">elevation_data</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.fetch.read_from_cache" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">read_from_cache</span><span class="p">(</span><span class="n">perimeter</span><span class="p">,</span> <span class="n">layer_kwargs</span><span class="p">,</span> <span class="n">cache_dir</span><span class="o">=</span><span class="s1">'prettymaps_cache'</span><span class="p">)</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Read a GeoDataFrame from the cache based on the perimeter and layer arguments.</p>
|
|
<p>Parameters:
|
|
perimeter (GeoDataFrame): The perimeter GeoDataFrame.
|
|
layer_kwargs (dict): Dictionary of layer arguments.
|
|
cache_dir (str): Directory to read the cached GeoDataFrame from.</p>
|
|
<p>Returns:
|
|
GeoDataFrame: The cached GeoDataFrame, or None if it does not exist.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/fetch.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">348</span>
|
|
<span class="normal">349</span>
|
|
<span class="normal">350</span>
|
|
<span class="normal">351</span>
|
|
<span class="normal">352</span>
|
|
<span class="normal">353</span>
|
|
<span class="normal">354</span>
|
|
<span class="normal">355</span>
|
|
<span class="normal">356</span>
|
|
<span class="normal">357</span>
|
|
<span class="normal">358</span>
|
|
<span class="normal">359</span>
|
|
<span class="normal">360</span>
|
|
<span class="normal">361</span>
|
|
<span class="normal">362</span>
|
|
<span class="normal">363</span>
|
|
<span class="normal">364</span>
|
|
<span class="normal">365</span>
|
|
<span class="normal">366</span>
|
|
<span class="normal">367</span>
|
|
<span class="normal">368</span>
|
|
<span class="normal">369</span>
|
|
<span class="normal">370</span>
|
|
<span class="normal">371</span>
|
|
<span class="normal">372</span>
|
|
<span class="normal">373</span>
|
|
<span class="normal">374</span>
|
|
<span class="normal">375</span>
|
|
<span class="normal">376</span>
|
|
<span class="normal">377</span>
|
|
<span class="normal">378</span>
|
|
<span class="normal">379</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">read_from_cache</span><span class="p">(</span>
|
|
<span class="n">perimeter</span><span class="p">:</span> <span class="n">GeoDataFrame</span><span class="p">,</span>
|
|
<span class="n">layer_kwargs</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span>
|
|
<span class="n">cache_dir</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"prettymaps_cache"</span><span class="p">,</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="n">GeoDataFrame</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Read a GeoDataFrame from the cache based on the perimeter and layer arguments.</span>
|
|
|
|
<span class="sd"> Parameters:</span>
|
|
<span class="sd"> perimeter (GeoDataFrame): The perimeter GeoDataFrame.</span>
|
|
<span class="sd"> layer_kwargs (dict): Dictionary of layer arguments.</span>
|
|
<span class="sd"> cache_dir (str): Directory to read the cached GeoDataFrame from.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> GeoDataFrame: The cached GeoDataFrame, or None if it does not exist.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">seed</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
<span class="c1"># Create hash from perimeter</span>
|
|
<span class="n">perimeter_hash</span> <span class="o">=</span> <span class="nb">hash</span><span class="p">(</span><span class="n">perimeter</span><span class="p">[</span><span class="s2">"geometry"</span><span class="p">]</span><span class="o">.</span><span class="n">to_json</span><span class="p">())</span>
|
|
<span class="c1"># Create hash from kwargs</span>
|
|
<span class="n">kwargs_hash</span> <span class="o">=</span> <span class="nb">hash</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">layer_kwargs</span><span class="p">))</span>
|
|
<span class="c1"># Join hashes</span>
|
|
<span class="n">hash_str</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">perimeter_hash</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="n">kwargs_hash</span><span class="si">}</span><span class="s2">"</span>
|
|
|
|
<span class="n">cache_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">cache_dir</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">hash_str</span><span class="si">}</span><span class="s2">.geojson"</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Check if the gdf is cached</span>
|
|
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">cache_path</span><span class="p">):</span>
|
|
<span class="c1"># Read cached gdf</span>
|
|
<span class="k">return</span> <span class="n">gp</span><span class="o">.</span><span class="n">read_file</span><span class="p">(</span><span class="n">cache_path</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">None</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.fetch.unified_osm_request" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">unified_osm_request</span><span class="p">(</span><span class="n">perimeter</span><span class="p">,</span> <span class="n">layers_dict</span><span class="p">,</span> <span class="n">logging</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Unify all OSM requests into one to improve efficiency.</p>
|
|
<p>Parameters:
|
|
perimeter (GeoDataFrame): The perimeter GeoDataFrame.
|
|
layers_dict (dict): Dictionary of layers to fetch.
|
|
logging (bool): Enable or disable logging.</p>
|
|
<p>Returns:
|
|
dict: Dictionary of GeoDataFrames for each layer.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/fetch.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">572</span>
|
|
<span class="normal">573</span>
|
|
<span class="normal">574</span>
|
|
<span class="normal">575</span>
|
|
<span class="normal">576</span>
|
|
<span class="normal">577</span>
|
|
<span class="normal">578</span>
|
|
<span class="normal">579</span>
|
|
<span class="normal">580</span>
|
|
<span class="normal">581</span>
|
|
<span class="normal">582</span>
|
|
<span class="normal">583</span>
|
|
<span class="normal">584</span>
|
|
<span class="normal">585</span>
|
|
<span class="normal">586</span>
|
|
<span class="normal">587</span>
|
|
<span class="normal">588</span>
|
|
<span class="normal">589</span>
|
|
<span class="normal">590</span>
|
|
<span class="normal">591</span>
|
|
<span class="normal">592</span>
|
|
<span class="normal">593</span>
|
|
<span class="normal">594</span>
|
|
<span class="normal">595</span>
|
|
<span class="normal">596</span>
|
|
<span class="normal">597</span>
|
|
<span class="normal">598</span>
|
|
<span class="normal">599</span>
|
|
<span class="normal">600</span>
|
|
<span class="normal">601</span>
|
|
<span class="normal">602</span>
|
|
<span class="normal">603</span>
|
|
<span class="normal">604</span>
|
|
<span class="normal">605</span>
|
|
<span class="normal">606</span>
|
|
<span class="normal">607</span>
|
|
<span class="normal">608</span>
|
|
<span class="normal">609</span>
|
|
<span class="normal">610</span>
|
|
<span class="normal">611</span>
|
|
<span class="normal">612</span>
|
|
<span class="normal">613</span>
|
|
<span class="normal">614</span>
|
|
<span class="normal">615</span>
|
|
<span class="normal">616</span>
|
|
<span class="normal">617</span>
|
|
<span class="normal">618</span>
|
|
<span class="normal">619</span>
|
|
<span class="normal">620</span>
|
|
<span class="normal">621</span>
|
|
<span class="normal">622</span>
|
|
<span class="normal">623</span>
|
|
<span class="normal">624</span>
|
|
<span class="normal">625</span>
|
|
<span class="normal">626</span>
|
|
<span class="normal">627</span>
|
|
<span class="normal">628</span>
|
|
<span class="normal">629</span>
|
|
<span class="normal">630</span>
|
|
<span class="normal">631</span>
|
|
<span class="normal">632</span>
|
|
<span class="normal">633</span>
|
|
<span class="normal">634</span>
|
|
<span class="normal">635</span>
|
|
<span class="normal">636</span>
|
|
<span class="normal">637</span>
|
|
<span class="normal">638</span>
|
|
<span class="normal">639</span>
|
|
<span class="normal">640</span>
|
|
<span class="normal">641</span>
|
|
<span class="normal">642</span>
|
|
<span class="normal">643</span>
|
|
<span class="normal">644</span>
|
|
<span class="normal">645</span>
|
|
<span class="normal">646</span>
|
|
<span class="normal">647</span>
|
|
<span class="normal">648</span>
|
|
<span class="normal">649</span>
|
|
<span class="normal">650</span>
|
|
<span class="normal">651</span>
|
|
<span class="normal">652</span>
|
|
<span class="normal">653</span>
|
|
<span class="normal">654</span>
|
|
<span class="normal">655</span>
|
|
<span class="normal">656</span>
|
|
<span class="normal">657</span>
|
|
<span class="normal">658</span>
|
|
<span class="normal">659</span>
|
|
<span class="normal">660</span>
|
|
<span class="normal">661</span>
|
|
<span class="normal">662</span>
|
|
<span class="normal">663</span>
|
|
<span class="normal">664</span>
|
|
<span class="normal">665</span>
|
|
<span class="normal">666</span>
|
|
<span class="normal">667</span>
|
|
<span class="normal">668</span>
|
|
<span class="normal">669</span>
|
|
<span class="normal">670</span>
|
|
<span class="normal">671</span>
|
|
<span class="normal">672</span>
|
|
<span class="normal">673</span>
|
|
<span class="normal">674</span>
|
|
<span class="normal">675</span>
|
|
<span class="normal">676</span>
|
|
<span class="normal">677</span>
|
|
<span class="normal">678</span>
|
|
<span class="normal">679</span>
|
|
<span class="normal">680</span>
|
|
<span class="normal">681</span>
|
|
<span class="normal">682</span>
|
|
<span class="normal">683</span>
|
|
<span class="normal">684</span>
|
|
<span class="normal">685</span>
|
|
<span class="normal">686</span>
|
|
<span class="normal">687</span>
|
|
<span class="normal">688</span>
|
|
<span class="normal">689</span>
|
|
<span class="normal">690</span>
|
|
<span class="normal">691</span>
|
|
<span class="normal">692</span>
|
|
<span class="normal">693</span>
|
|
<span class="normal">694</span>
|
|
<span class="normal">695</span>
|
|
<span class="normal">696</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">unified_osm_request</span><span class="p">(</span>
|
|
<span class="n">perimeter</span><span class="p">:</span> <span class="n">GeoDataFrame</span><span class="p">,</span> <span class="n">layers_dict</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span> <span class="n">logging</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span>
|
|
<span class="p">)</span> <span class="o">-></span> <span class="nb">dict</span><span class="p">:</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Unify all OSM requests into one to improve efficiency.</span>
|
|
|
|
<span class="sd"> Parameters:</span>
|
|
<span class="sd"> perimeter (GeoDataFrame): The perimeter GeoDataFrame.</span>
|
|
<span class="sd"> layers_dict (dict): Dictionary of layers to fetch.</span>
|
|
<span class="sd"> logging (bool): Enable or disable logging.</span>
|
|
|
|
<span class="sd"> Returns:</span>
|
|
<span class="sd"> dict: Dictionary of GeoDataFrames for each layer.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="c1"># Apply tolerance to the perimeter</span>
|
|
<span class="n">perimeter_with_tolerance</span> <span class="o">=</span> <span class="n">ox</span><span class="o">.</span><span class="n">projection</span><span class="o">.</span><span class="n">project_gdf</span><span class="p">(</span><span class="n">perimeter</span><span class="p">)</span><span class="o">.</span><span class="n">buffer</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">to_crs</span><span class="p">(</span><span class="mi">4326</span><span class="p">)</span>
|
|
<span class="n">perimeter_with_tolerance</span> <span class="o">=</span> <span class="n">unary_union</span><span class="p">(</span><span class="n">perimeter_with_tolerance</span><span class="o">.</span><span class="n">geometry</span><span class="p">)</span><span class="o">.</span><span class="n">buffer</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Fetch from perimeter's bounding box, to avoid missing some geometries</span>
|
|
<span class="n">bbox</span> <span class="o">=</span> <span class="n">box</span><span class="p">(</span><span class="o">*</span><span class="n">perimeter_with_tolerance</span><span class="o">.</span><span class="n">bounds</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Initialize the result dictionary</span>
|
|
<span class="n">gdfs</span> <span class="o">=</span> <span class="p">{}</span>
|
|
<span class="c1">## Read layers from cache</span>
|
|
<span class="c1"># for layer, kwargs in layers_dict.items():</span>
|
|
<span class="c1"># gdf = read_from_cache(perimeter, layers_dict[layer])</span>
|
|
<span class="c1"># if gdf is not None:</span>
|
|
<span class="c1"># gdfs[layer] = gdf</span>
|
|
|
|
<span class="c1"># Combine all tags into a single dictionary for a unified request</span>
|
|
<span class="n">combined_tags</span> <span class="o">=</span> <span class="n">merge_tags</span><span class="p">(</span>
|
|
<span class="p">{</span><span class="n">layer</span><span class="p">:</span> <span class="n">kwargs</span> <span class="k">for</span> <span class="n">layer</span><span class="p">,</span> <span class="n">kwargs</span> <span class="ow">in</span> <span class="n">layers_dict</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">layer</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">gdfs</span><span class="p">}</span>
|
|
<span class="p">)</span>
|
|
|
|
<span class="c1"># Fetch all features in one request</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">all_features</span> <span class="o">=</span> <span class="n">ox</span><span class="o">.</span><span class="n">features</span><span class="o">.</span><span class="n">features_from_polygon</span><span class="p">(</span><span class="n">bbox</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="n">combined_tags</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
<span class="n">all_features</span> <span class="o">=</span> <span class="n">GeoDataFrame</span><span class="p">(</span><span class="n">geometry</span><span class="o">=</span><span class="p">[])</span>
|
|
|
|
<span class="c1"># Split the features into separate GeoDataFrames based on the layers_dict</span>
|
|
<span class="k">for</span> <span class="n">layer</span><span class="p">,</span> <span class="n">kwargs</span> <span class="ow">in</span> <span class="n">layers_dict</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
<span class="k">if</span> <span class="n">layer</span> <span class="ow">in</span> <span class="n">gdfs</span><span class="p">:</span>
|
|
<span class="k">continue</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">layer</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"streets"</span><span class="p">,</span> <span class="s2">"railway"</span><span class="p">,</span> <span class="s2">"waterway"</span><span class="p">]:</span>
|
|
<span class="n">graph</span> <span class="o">=</span> <span class="n">ox</span><span class="o">.</span><span class="n">graph_from_polygon</span><span class="p">(</span>
|
|
<span class="n">bbox</span><span class="p">,</span>
|
|
<span class="n">custom_filter</span><span class="o">=</span><span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"custom_filter"</span><span class="p">),</span>
|
|
<span class="n">truncate_by_edge</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
|
<span class="p">)</span>
|
|
<span class="n">gdf</span> <span class="o">=</span> <span class="n">ox</span><span class="o">.</span><span class="n">graph_to_gdfs</span><span class="p">(</span><span class="n">graph</span><span class="p">,</span> <span class="n">nodes</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
|
<span class="k">elif</span> <span class="n">layer</span> <span class="o">==</span> <span class="s2">"sea"</span><span class="p">:</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">coastline</span> <span class="o">=</span> <span class="n">unary_union</span><span class="p">(</span>
|
|
<span class="n">ox</span><span class="o">.</span><span class="n">features</span><span class="o">.</span><span class="n">features_from_polygon</span><span class="p">(</span>
|
|
<span class="n">bbox</span><span class="p">,</span> <span class="n">tags</span><span class="o">=</span><span class="p">{</span><span class="s2">"natural"</span><span class="p">:</span> <span class="s2">"coastline"</span><span class="p">}</span>
|
|
<span class="p">)</span><span class="o">.</span><span class="n">geometry</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span>
|
|
<span class="p">)</span>
|
|
<span class="n">sea_candidates</span> <span class="o">=</span> <span class="n">bbox</span><span class="o">.</span><span class="n">difference</span><span class="p">(</span><span class="n">coastline</span><span class="o">.</span><span class="n">buffer</span><span class="p">(</span><span class="mf">1e-9</span><span class="p">))</span><span class="o">.</span><span class="n">geoms</span>
|
|
<span class="n">drive</span> <span class="o">=</span> <span class="n">ox</span><span class="o">.</span><span class="n">graph_from_polygon</span><span class="p">(</span><span class="n">bbox</span><span class="p">,</span> <span class="n">network_type</span><span class="o">=</span><span class="s2">"drive"</span><span class="p">)</span>
|
|
<span class="n">drive</span> <span class="o">=</span> <span class="n">ox</span><span class="o">.</span><span class="n">graph_to_gdfs</span><span class="p">(</span><span class="n">drive</span><span class="p">,</span> <span class="n">nodes</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
|
|
|
<span class="k">def</span><span class="w"> </span><span class="nf">filter_candidate</span><span class="p">(</span><span class="n">sea_candidate</span><span class="p">):</span>
|
|
<span class="n">intersections</span> <span class="o">=</span> <span class="n">drive</span><span class="o">.</span><span class="n">geometry</span><span class="o">.</span><span class="n">intersects</span><span class="p">(</span><span class="n">sea_candidate</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="s2">"bridge"</span> <span class="ow">in</span> <span class="n">drive</span><span class="o">.</span><span class="n">columns</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="ow">not</span> <span class="nb">any</span><span class="p">(</span>
|
|
<span class="n">intersections</span>
|
|
<span class="o">&</span> <span class="p">(</span>
|
|
<span class="n">drive</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span>
|
|
<span class="n">drive</span><span class="o">.</span><span class="n">geometry</span><span class="o">.</span><span class="n">intersects</span><span class="p">(</span><span class="n">sea_candidate</span><span class="p">),</span>
|
|
<span class="s2">"bridge"</span><span class="p">,</span>
|
|
<span class="p">]</span>
|
|
<span class="o">!=</span> <span class="s2">"yes"</span>
|
|
<span class="p">)</span>
|
|
<span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="ow">not</span> <span class="nb">any</span><span class="p">(</span><span class="n">intersections</span><span class="p">)</span>
|
|
|
|
<span class="n">sea</span> <span class="o">=</span> <span class="n">unary_union</span><span class="p">(</span>
|
|
<span class="n">MultiPolygon</span><span class="p">(</span>
|
|
<span class="p">[</span>
|
|
<span class="n">candidate</span>
|
|
<span class="k">for</span> <span class="n">candidate</span> <span class="ow">in</span> <span class="n">sea_candidates</span>
|
|
<span class="k">if</span> <span class="n">filter_candidate</span><span class="p">(</span><span class="n">candidate</span><span class="p">)</span>
|
|
<span class="p">]</span>
|
|
<span class="p">)</span><span class="o">.</span><span class="n">geoms</span>
|
|
<span class="p">)</span><span class="o">.</span><span class="n">buffer</span><span class="p">(</span><span class="mf">1e-8</span><span class="p">)</span>
|
|
<span class="n">gdf</span> <span class="o">=</span> <span class="n">GeoDataFrame</span><span class="p">(</span><span class="n">geometry</span><span class="o">=</span><span class="p">[</span><span class="n">sea</span><span class="p">],</span> <span class="n">crs</span><span class="o">=</span><span class="n">perimeter</span><span class="o">.</span><span class="n">crs</span><span class="p">)</span>
|
|
<span class="k">except</span><span class="p">:</span>
|
|
<span class="n">gdf</span> <span class="o">=</span> <span class="n">GeoDataFrame</span><span class="p">(</span><span class="n">geometry</span><span class="o">=</span><span class="p">[],</span> <span class="n">crs</span><span class="o">=</span><span class="n">perimeter</span><span class="o">.</span><span class="n">crs</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"osmid"</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">layer</span> <span class="o">==</span> <span class="s2">"perimeter"</span><span class="p">:</span>
|
|
<span class="n">gdf</span> <span class="o">=</span> <span class="n">perimeter</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">layer_tags</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"tags"</span><span class="p">)</span>
|
|
<span class="n">gdf</span> <span class="o">=</span> <span class="n">gp</span><span class="o">.</span><span class="n">GeoDataFrame</span><span class="p">(</span><span class="n">geometry</span><span class="o">=</span><span class="p">[],</span> <span class="n">crs</span><span class="o">=</span><span class="n">perimeter</span><span class="o">.</span><span class="n">crs</span><span class="p">)</span>
|
|
<span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">layer_tags</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
|
|
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">bool</span><span class="p">)</span> <span class="ow">and</span> <span class="n">value</span><span class="p">:</span>
|
|
<span class="n">filtered_features</span> <span class="o">=</span> <span class="n">all_features</span><span class="p">[</span>
|
|
<span class="o">~</span><span class="n">pd</span><span class="o">.</span><span class="n">isna</span><span class="p">(</span><span class="n">all_features</span><span class="p">[</span><span class="n">key</span><span class="p">])</span>
|
|
<span class="p">]</span>
|
|
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
|
|
<span class="n">filtered_features</span> <span class="o">=</span> <span class="n">all_features</span><span class="p">[</span>
|
|
<span class="n">all_features</span><span class="p">[</span><span class="n">key</span><span class="p">]</span><span class="o">.</span><span class="n">isin</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
|
<span class="p">]</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">filtered_features</span> <span class="o">=</span> <span class="n">all_features</span><span class="p">[</span>
|
|
<span class="n">all_features</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">==</span> <span class="n">value</span>
|
|
<span class="p">]</span>
|
|
<span class="n">gdf</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">gdf</span><span class="p">,</span> <span class="n">filtered_features</span><span class="p">],</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">gdf</span> <span class="o">=</span> <span class="n">ox</span><span class="o">.</span><span class="n">geocoder</span><span class="o">.</span><span class="n">geocode_to_gdf</span><span class="p">(</span><span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"osmid"</span><span class="p">),</span> <span class="n">by_osmid</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
|
|
<span class="n">gdf</span> <span class="o">=</span> <span class="n">gdf</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
|
<span class="n">gdf</span><span class="o">.</span><span class="n">geometry</span> <span class="o">=</span> <span class="n">gdf</span><span class="o">.</span><span class="n">geometry</span><span class="o">.</span><span class="n">intersection</span><span class="p">(</span><span class="n">perimeter_with_tolerance</span><span class="p">)</span>
|
|
<span class="n">gdf</span><span class="o">.</span><span class="n">drop</span><span class="p">(</span><span class="n">gdf</span><span class="p">[</span><span class="n">gdf</span><span class="o">.</span><span class="n">geometry</span><span class="o">.</span><span class="n">is_empty</span><span class="p">]</span><span class="o">.</span><span class="n">index</span><span class="p">,</span> <span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="n">gdfs</span><span class="p">[</span><span class="n">layer</span><span class="p">]</span> <span class="o">=</span> <span class="n">gdf</span>
|
|
<span class="c1"># write_to_cache(perimeter, gdf, layers_dict[layer])</span>
|
|
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
|
<span class="c1"># print(f"Error fetching {layer}: {e}")</span>
|
|
<span class="n">gdfs</span><span class="p">[</span><span class="n">layer</span><span class="p">]</span> <span class="o">=</span> <span class="n">GeoDataFrame</span><span class="p">(</span><span class="n">geometry</span><span class="o">=</span><span class="p">[])</span>
|
|
|
|
<span class="k">return</span> <span class="n">gdfs</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="doc doc-object doc-function">
|
|
|
|
|
|
<h3 id="prettymaps.fetch.write_to_cache" class="doc doc-heading">
|
|
<code class="highlight language-python"><span class="n">write_to_cache</span><span class="p">(</span><span class="n">perimeter</span><span class="p">,</span> <span class="n">gdf</span><span class="p">,</span> <span class="n">layer_kwargs</span><span class="p">,</span> <span class="n">cache_dir</span><span class="o">=</span><span class="s1">'prettymaps_cache'</span><span class="p">)</span></code>
|
|
|
|
</h3>
|
|
|
|
|
|
<div class="doc doc-contents ">
|
|
|
|
<p>Write a GeoDataFrame to the cache based on the perimeter and layer arguments.</p>
|
|
<p>Parameters:
|
|
perimeter (GeoDataFrame): The perimeter GeoDataFrame.
|
|
gdf (GeoDataFrame): The GeoDataFrame to cache.
|
|
layer_kwargs (dict): Dictionary of layer arguments.
|
|
cache_dir (str): Directory to save the cached GeoDataFrame.</p>
|
|
|
|
|
|
<details class="quote">
|
|
<summary>Source code in <code>prettymaps/fetch.py</code></summary>
|
|
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">314</span>
|
|
<span class="normal">315</span>
|
|
<span class="normal">316</span>
|
|
<span class="normal">317</span>
|
|
<span class="normal">318</span>
|
|
<span class="normal">319</span>
|
|
<span class="normal">320</span>
|
|
<span class="normal">321</span>
|
|
<span class="normal">322</span>
|
|
<span class="normal">323</span>
|
|
<span class="normal">324</span>
|
|
<span class="normal">325</span>
|
|
<span class="normal">326</span>
|
|
<span class="normal">327</span>
|
|
<span class="normal">328</span>
|
|
<span class="normal">329</span>
|
|
<span class="normal">330</span>
|
|
<span class="normal">331</span>
|
|
<span class="normal">332</span>
|
|
<span class="normal">333</span>
|
|
<span class="normal">334</span>
|
|
<span class="normal">335</span>
|
|
<span class="normal">336</span>
|
|
<span class="normal">337</span>
|
|
<span class="normal">338</span>
|
|
<span class="normal">339</span>
|
|
<span class="normal">340</span>
|
|
<span class="normal">341</span>
|
|
<span class="normal">342</span>
|
|
<span class="normal">343</span>
|
|
<span class="normal">344</span>
|
|
<span class="normal">345</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">def</span><span class="w"> </span><span class="nf">write_to_cache</span><span class="p">(</span>
|
|
<span class="n">perimeter</span><span class="p">:</span> <span class="n">GeoDataFrame</span><span class="p">,</span>
|
|
<span class="n">gdf</span><span class="p">:</span> <span class="n">GeoDataFrame</span><span class="p">,</span>
|
|
<span class="n">layer_kwargs</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span>
|
|
<span class="n">cache_dir</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"prettymaps_cache"</span><span class="p">,</span>
|
|
<span class="p">):</span>
|
|
<span class="w"> </span><span class="sd">"""</span>
|
|
<span class="sd"> Write a GeoDataFrame to the cache based on the perimeter and layer arguments.</span>
|
|
|
|
<span class="sd"> Parameters:</span>
|
|
<span class="sd"> perimeter (GeoDataFrame): The perimeter GeoDataFrame.</span>
|
|
<span class="sd"> gdf (GeoDataFrame): The GeoDataFrame to cache.</span>
|
|
<span class="sd"> layer_kwargs (dict): Dictionary of layer arguments.</span>
|
|
<span class="sd"> cache_dir (str): Directory to save the cached GeoDataFrame.</span>
|
|
<span class="sd"> """</span>
|
|
<span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">seed</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
|
<span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">cache_dir</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Create hash from perimeter</span>
|
|
<span class="n">perimeter_hash</span> <span class="o">=</span> <span class="nb">hash</span><span class="p">(</span><span class="n">perimeter</span><span class="p">[</span><span class="s2">"geometry"</span><span class="p">]</span><span class="o">.</span><span class="n">to_json</span><span class="p">())</span>
|
|
<span class="c1"># Create hash from kwargs</span>
|
|
<span class="n">kwargs_hash</span> <span class="o">=</span> <span class="nb">hash</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">layer_kwargs</span><span class="p">))</span>
|
|
<span class="c1"># Join hashes</span>
|
|
<span class="n">hash_str</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">perimeter_hash</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="n">kwargs_hash</span><span class="si">}</span><span class="s2">"</span>
|
|
|
|
<span class="n">cache_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">cache_dir</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">hash_str</span><span class="si">}</span><span class="s2">.geojson"</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Write gdf to cache</span>
|
|
<span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">()</span><span class="o">.</span><span class="n">setLevel</span><span class="p">(</span><span class="n">logging</span><span class="o">.</span><span class="n">CRITICAL</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">gdf</span><span class="o">.</span><span class="n">empty</span><span class="p">:</span>
|
|
<span class="n">gdf</span><span class="o">.</span><span class="n">to_file</span><span class="p">(</span><span class="n">cache_path</span><span class="p">,</span> <span class="n">driver</span><span class="o">=</span><span class="s2">"GeoJSON"</span><span class="p">)</span>
|
|
<span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">()</span><span class="o">.</span><span class="n">setLevel</span><span class="p">(</span><span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">)</span>
|
|
</code></pre></div></td></tr></table></div>
|
|
</details>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</article>
|
|
</div>
|
|
|
|
|
|
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
|
</div>
|
|
|
|
</main>
|
|
|
|
<footer class="md-footer">
|
|
|
|
<div class="md-footer-meta md-typeset">
|
|
<div class="md-footer-meta__inner md-grid">
|
|
<div class="md-copyright">
|
|
|
|
|
|
Made with
|
|
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
|
Material for MkDocs
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
</div>
|
|
<div class="md-dialog" data-md-component="dialog">
|
|
<div class="md-dialog__inner md-typeset"></div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<script id="__config" type="application/json">{"base": "..", "features": [], "search": "../assets/javascripts/workers/search.973d3a69.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
|
|
|
|
|
|
<script src="../assets/javascripts/bundle.92b07e13.min.js"></script>
|
|
|
|
|
|
</body>
|
|
</html> |