
    (&h                     P    d Z ddlZddlZd Zd Zd Z	 	 	 	 	 	 ddZdd	ZddZ	dS )zPlot single geometries using Matplotlib.

Note: this module is experimental, and mainly targeting (interactive)
exploration, debugging and illustration purposes.

    Nc                      dd l m}  |                                 }|                    d           |                    d           |S )Nr   Tequal)matplotlib.pyplotpyplotgcagrid
set_aspect)pltaxs     K/var/www/html/reinick/venv/lib/python3.11/site-packages/shapely/plotting.py_default_axr      sG    ######	BGGDMMMMM'I    c                 8   ddl m ddlm} t	          | t
          j                  r j        d | j        D              S  ||           }  j         t          j
        | j        j                  d d d df                   gfd| j        D             R  S )Nr   Path)orientc                 ,    g | ]}t          |          S  )_path_from_polygon).0polys     r   
<listcomp>z&_path_from_polygon.<locals>.<listcomp>   s!    AAA4 &&AAAr      c                 l    g | ]0} t          j        |j                  d d d df                   1S Nr   npasarraycoords)r   ringr   s     r   r   z&_path_from_polygon.<locals>.<listcomp>#   s@    QQQtdd2:dk**111bqb5122QQQr   )matplotlib.pathr   shapely.opsr   
isinstanceshapelyMultiPolygonmake_compound_pathgeomsr   r   exteriorr   	interiors)polygonr   r   s     @r   r   r      s    $$$$$$""""""'7/00 	
&t&AA7=AAA
 	
 &//&t&DG,344QQQU;<<
QQQQw?PQQQ
 
 
 	
r   c                 :    ddl m}  |t          |           fi |S )a  Get a Matplotlib patch from a (Multi)Polygon.

    Note: this function is experimental, and mainly targeting (interactive)
    exploration, debugging and illustration purposes.

    Parameters
    ----------
    polygon : shapely.Polygon or shapely.MultiPolygon
        The polygon to convert to a Matplotlib Patch.
    **kwargs
        Additional keyword arguments passed to the matplotlib Patch.

    Returns
    -------
    Matplotlib artist (PathPatch)

    r   	PathPatch)matplotlib.patchesr-   r   )r*   kwargsr-   s      r   patch_from_polygonr0   '   s7    $ -,,,,,9'00;;F;;;r   Tc                 Z   ddl m} |t                      }|d}|                    |          }|#t	          |          }d|d<   t          |          }||}t          | f|||d|}	|                    |	           |                                 |rt          | ||          }
|	|
fS |	S )	a  Plot a (Multi)Polygon.

    Note: this function is experimental, and mainly targeting (interactive)
    exploration, debugging and illustration purposes.

    Parameters
    ----------
    polygon : shapely.Polygon or shapely.MultiPolygon
        The polygon to plot.
    ax : matplotlib Axes, default None
        The axes on which to draw the plot. If not specified, will get the
        current active axes or create a new figure.
    add_points : bool, default True
        If True, also plot the coordinates (vertices) as points.
    color : matplotlib color specification
        Color for both the polygon fill (face) and boundary (edge). By default,
        the fill is using an alpha of 0.3. You can specify `facecolor` and
        `edgecolor` separately for greater control.
    facecolor : matplotlib color specification
        Color for the polygon fill.
    edgecolor : matplotlib color specification
        Color for the polygon boundary.
    linewidth : float
        The line width for the polygon boundary.
    **kwargs
        Additional keyword arguments passed to the matplotlib Patch.

    Returns
    -------
    Matplotlib artist (PathPatch), if `add_points` is false.
    A tuple of Matplotlib artists (PathPatch, Line2D), if `add_points` is true.

    r   )colorsNC0g333333?	facecolor	edgecolor	linewidthr   color)

matplotlibr2   r   to_rgbalisttupler0   	add_patchautoscale_viewplot_points)r*   r   
add_pointsr:   r6   r7   r8   r/   r2   patchlines              r   plot_polygonrE   >   s    V "!!!!!	z]]}NN5!!EKK		")$$		$	Y RX E LL 7r777d{Lr   r   c                   	 ddl m} ddlm	 |t	                      }|d}t          | t          j                  r 	j        	fd| j	        D              }n. 	t          j        | j                  ddddf                   } ||fd||d	|}|                    |           |                                 |rt          | ||
          } || fS |S )aq  Plot a (Multi)LineString/LinearRing.

    Note: this function is experimental, and mainly targeting (interactive)
    exploration, debugging and illustration purposes.

    Parameters
    ----------
    line : shapely.LineString or shapely.LinearRing
        The line to plot.
    ax : matplotlib Axes, default None
        The axes on which to draw the plot. If not specified, will get the
        current active axes or create a new figure.
    add_points : bool, default True
        If True, also plot the coordinates (vertices) as points.
    color : matplotlib color specification
        Color for the line (edgecolor under the hood) and points.
    linewidth : float, default 2
        The line width for the polygon boundary.
    **kwargs
        Additional keyword arguments passed to the matplotlib Patch.

    Returns
    -------
    Matplotlib artist (PathPatch)

    r   r,   r   Nr3   c                 l    g | ]0} t          j        |j                  d d d df                   1S r   r   )r   mliner   s     r   r   zplot_line.<locals>.<listcomp>   s@    LLLdd2:el++AAArrE233LLLr   r   noner5   r9   )r.   r-   r!   r   r   r#   r$   MultiLineStringr&   r'   r   r   r   r?   r@   rA   )
rD   r   rB   r:   r8   r/   r-   pathrC   r   s
            @r   	plot_linerL      s,   6 -,,,,,$$$$$$	z]]}$/00 4&t&LLLLLLL
 tBJt{++AAArrE233I%9 HN E LL 4Be444d{Lr   oc                     |t                      }t          j        |           } |j        |dddf         |dddf         fd||d|\  }|S )a  Plot a Point/MultiPoint or the vertices of any other geometry type.

    Parameters
    ----------
    geom : shapely.Geometry
        Any shapely Geometry object, from which all vertices are extracted
        and plotted.
    ax : matplotlib Axes, default None
        The axes on which to draw the plot. If not specified, will get the
        current active axes or create a new figure.
    color : matplotlib color specification
        Color for the filled points. You can use `markeredgecolor` and
        `markerfacecolor` to have different edge and fill colors.
    marker : str, default "o"
        The matplotlib marker for the points.
    **kwargs
        Additional keyword arguments passed to matplotlib `plot` (Line2D).

    Returns
    -------
    Matplotlib artist (Line2D)

    Nr       )	linestylemarkerr:   )r   r$   get_coordinatesplot)geomr   r:   rR   r/   r   rD   s          r   rA   rA      st    0 
z]]$T**Fbgqqq!tfQQQTl.0u PV GT Kr   )NTNNNN)NTNr   )NNrM   )
__doc__numpyr   r$   r   r   r0   rE   rL   rA   r   r   r   <module>rX      s           
 
 
"< < <2 
F F F FR5 5 5 5p     r   