a
    J5d5                     @   s   d dl ZddlmZ ddlmZ ddlmZmZ ddl	m
Z
 ddlmZ g dZed	d dd
dZeddd
dZd#ddZd$ddZe
dd%ddZd&ddZd'ddZe
d d(d!d"ZdS ))    N   )lib)	ParamEnum)from_ragged_arrayto_ragged_array)requires_geos)UnsupportedGEOSVersionError)from_geojsonr   from_wkbfrom_wkt
to_geojsonr   to_wkbto_wktDecodingErrorOptions   )ignorewarnraiseWKBFlavorOptions)extendediso   T   Fc                 K   sz   t |stdt |s$tdt |s6tdt |sHtdtj| t |t |t |t |fi |S )a  
    Converts to the Well-Known Text (WKT) representation of a Geometry.

    The Well-known Text format is defined in the `OGC Simple Features
    Specification for SQL <https://www.opengeospatial.org/standards/sfs>`__.

    The following limitations apply to WKT serialization:

    - for GEOS <= 3.8 a multipoint with an empty sub-geometry will raise an exception
    - for GEOS <= 3.8 empty geometries are always serialized to 2D
    - for GEOS >= 3.9 only simple empty geometries can be 3D, collections are still
      always 2D

    Parameters
    ----------
    geometry : Geometry or array_like
    rounding_precision : int, default 6
        The rounding precision when writing the WKT string. Set to a value of
        -1 to indicate the full precision.
    trim : bool, default True
        If True, trim unnecessary decimals (trailing zeros).
    output_dimension : int, default 3
        The output dimension for the WKT string. Supported values are 2 and 3.
        Specifying 3 means that up to 3 dimensions will be written but 2D
        geometries will still be represented as 2D in the WKT string.
    old_3d : bool, default False
        Enable old style 3D/4D WKT generation. By default, new style 3D/4D WKT
        (ie. "POINT Z (10 20 30)") is returned, but with ``old_3d=True``
        the WKT will be formatted in the style "POINT (10 20 30)".
    **kwargs
        For other keyword-only arguments, see the
        `NumPy ufunc docs <https://numpy.org/doc/stable/reference/ufuncs.html#ufuncs-kwargs>`_.

    Examples
    --------
    >>> from shapely import Point
    >>> to_wkt(Point(0, 0))
    'POINT (0 0)'
    >>> to_wkt(Point(0, 0), rounding_precision=3, trim=False)
    'POINT (0.000 0.000)'
    >>> to_wkt(Point(0, 0), rounding_precision=-1, trim=False)
    'POINT (0.0000000000000000 0.0000000000000000)'
    >>> to_wkt(Point(1, 2, 3), trim=True)
    'POINT Z (1 2 3)'
    >>> to_wkt(Point(1, 2, 3), trim=True, output_dimension=2)
    'POINT (1 2)'
    >>> to_wkt(Point(1, 2, 3), trim=True, old_3d=True)
    'POINT (1 2 3)'

    Notes
    -----
    The defaults differ from the default of the GEOS library. To mimic this,
    use::

        to_wkt(geometry, rounding_precision=-1, trim=False, output_dimension=2)

    z-rounding_precision only accepts scalar valuesztrim only accepts scalar values+output_dimension only accepts scalar valuesz!old_3d only accepts scalar values)npisscalar	TypeErrorr   r   intcbool_)geometryZrounding_precisionZtrimoutput_dimensionZold_3dkwargs r"   F/var/www/html/django/DPS/env/lib/python3.9/site-packages/shapely/io.pyr       s"    A



r   r   c              	   K   s   t |stdt |s$tdt |s6tdt |sHtdt |sZtdtjdk rt|dkrttd|dkr|rtd	t|}tj	| t 
|t |t |t 
|t |fi |S )
aE	  
    Converts to the Well-Known Binary (WKB) representation of a Geometry.

    The Well-Known Binary format is defined in the `OGC Simple Features
    Specification for SQL <https://www.opengeospatial.org/standards/sfs>`__.

    The following limitations apply to WKB serialization:

    - linearrings will be converted to linestrings
    - a point with only NaN coordinates is converted to an empty point
    - for GEOS <= 3.7, empty points are always serialized to 3D if
      output_dimension=3, and to 2D if output_dimension=2
    - for GEOS == 3.8, empty points are always serialized to 2D

    Parameters
    ----------
    geometry : Geometry or array_like
    hex : bool, default False
        If true, export the WKB as a hexidecimal string. The default is to
        return a binary bytes object.
    output_dimension : int, default 3
        The output dimension for the WKB. Supported values are 2 and 3.
        Specifying 3 means that up to 3 dimensions will be written but 2D
        geometries will still be represented as 2D in the WKB represenation.
    byte_order : int, default -1
        Defaults to native machine byte order (-1). Use 0 to force big endian
        and 1 for little endian.
    include_srid : bool, default False
        If True, the SRID is be included in WKB (this is an extension
        to the OGC WKB specification). Not allowed when flavor is "iso".
    flavor : {"iso", "extended"}, default "extended"
        Which flavor of WKB will be returned. The flavor determines how
        extra dimensionality is encoded with the type number, and whether
        SRID can be included in the WKB. ISO flavor is "more standard" for
        3D output, and does not support SRID embedding.
        Both flavors are equivalent when ``output_dimension=2`` (or with 2D
        geometries) and ``include_srid=False``.
        The `from_wkb` function can read both flavors.
    **kwargs
        For other keyword-only arguments, see the
        `NumPy ufunc docs <https://numpy.org/doc/stable/reference/ufuncs.html#ufuncs-kwargs>`_.

    Examples
    --------
    >>> from shapely import Point
    >>> point = Point(1, 1)
    >>> to_wkb(point, byte_order=1)
    b'\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?'
    >>> to_wkb(point, hex=True, byte_order=1)
    '0101000000000000000000F03F000000000000F03F'
    zhex only accepts scalar valuesr   z%byte_order only accepts scalar valuesz'include_srid only accepts scalar valuesz!flavor only accepts scalar values)r   
   r   r   z.The "iso" option requires at least GEOS 3.10.0z:flavor="iso" and include_srid=True cannot be used together)r   r   r   r   Zgeos_versionr   
ValueErrorr   	get_valuer   r   r   )r   hexr    Z
byte_orderZinclude_sridZflavorr!   r"   r"   r#   r   t   s6    <





r   z3.10.0c                 K   sL   |du rd}n$t |s"tdn|dk r2tdtj| t |fi |S )aq  Converts to the GeoJSON representation of a Geometry.

    The GeoJSON format is defined in the `RFC 7946 <https://geojson.org/>`__.
    NaN (not-a-number) coordinates will be written as 'null'.

    The following are currently unsupported:

    - Geometries of type LINEARRING: these are output as 'null'.
    - Three-dimensional geometries: the third dimension is ignored.

    Parameters
    ----------
    geometry : str, bytes or array_like
    indent : int, optional
        If indent is a non-negative integer, then GeoJSON will be formatted.
        An indent level of 0 will only insert newlines. None (the default)
        selects the most compact representation.
    **kwargs
        For other keyword-only arguments, see the
        `NumPy ufunc docs <https://numpy.org/doc/stable/reference/ufuncs.html#ufuncs-kwargs>`_.

    Examples
    --------
    >>> from shapely import Point
    >>> point = Point(1, 1)
    >>> to_geojson(point)
    '{"type":"Point","coordinates":[1.0,1.0]}'
    >>> print(to_geojson(point, indent=2))
    {
      "type": "Point",
      "coordinates": [
          1.0,
          1.0
      ]
    }
    Nr$   z!indent only accepts scalar valuesr   zindent cannot be negative)r   r   r   r&   r   r   r   )r   indentr!   r"   r"   r#   r      s    )

r   r   c                 K   s6   t |stdt t|}tj| |fi |S )a  
    Creates geometries from the Well-Known Text (WKT) representation.

    The Well-known Text format is defined in the `OGC Simple Features
    Specification for SQL <https://www.opengeospatial.org/standards/sfs>`__.

    Parameters
    ----------
    geometry : str or array_like
        The WKT string(s) to convert.
    on_invalid : {"raise", "warn", "ignore"}, default "raise"
        - raise: an exception will be raised if WKT input geometries are invalid.
        - warn: a warning will be raised and invalid WKT geometries will be
          returned as ``None``.
        - ignore: invalid WKT geometries will be returned as ``None`` without a warning.
    **kwargs
        For other keyword-only arguments, see the
        `NumPy ufunc docs <https://numpy.org/doc/stable/reference/ufuncs.html#ufuncs-kwargs>`_.

    Examples
    --------
    >>> from_wkt('POINT (0 0)')
    <POINT (0 0)>
    %on_invalid only accepts scalar values)r   r   r   uint8r   r'   r   r   r   Z
on_invalidr!   Zinvalid_handlerr"   r"   r#   r      s    
r   c                 K   sD   t |stdt t|}t j| td} tj	| |fi |S )a  
    Creates geometries from the Well-Known Binary (WKB) representation.

    The Well-Known Binary format is defined in the `OGC Simple Features
    Specification for SQL <https://www.opengeospatial.org/standards/sfs>`__.


    Parameters
    ----------
    geometry : str or array_like
        The WKB byte object(s) to convert.
    on_invalid : {"raise", "warn", "ignore"}, default "raise"
        - raise: an exception will be raised if a WKB input geometry is invalid.
        - warn: a warning will be raised and invalid WKB geometries will be
          returned as ``None``.
        - ignore: invalid WKB geometries will be returned as ``None`` without a warning.
    **kwargs
        For other keyword-only arguments, see the
        `NumPy ufunc docs <https://numpy.org/doc/stable/reference/ufuncs.html#ufuncs-kwargs>`_.

    Examples
    --------
    >>> from_wkb(b'\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?')
    <POINT (1 1)>
    r*   Zdtype)
r   r   r   r+   r   r'   asarrayobjectr   r
   r,   r"   r"   r#   r
   !  s
    
r
   z3.10.1c                 K   sD   t |stdt t|}t j| td} tj	| |fi |S )a  Creates geometries from GeoJSON representations (strings).

    If a GeoJSON is a FeatureCollection, it is read as a single geometry
    (with type GEOMETRYCOLLECTION). This may be unpacked using the ``pygeos.get_parts``.
    Properties are not read.

    The GeoJSON format is defined in `RFC 7946 <https://geojson.org/>`__.

    The following are currently unsupported:

    - Three-dimensional geometries: the third dimension is ignored.
    - Geometries having 'null' in the coordinates.

    Parameters
    ----------
    geometry : str, bytes or array_like
        The GeoJSON string or byte object(s) to convert.
    on_invalid : {"raise", "warn", "ignore"}, default "raise"
        - raise: an exception will be raised if an input GeoJSON is invalid.
        - warn: a warning will be raised and invalid input geometries will be
          returned as ``None``.
        - ignore: invalid input geometries will be returned as ``None`` without a warning.
    **kwargs
        For other keyword-only arguments, see the
        `NumPy ufunc docs <https://numpy.org/doc/stable/reference/ufuncs.html#ufuncs-kwargs>`_.

    See also
    --------
    get_parts

    Examples
    --------
    >>> from_geojson('{"type": "Point","coordinates": [1, 2]}')
    <POINT (1 2)>
    r*   r-   )
r   r   r   r+   r   r'   r.   r/   r   r	   r,   r"   r"   r#   r	   H  s
    (
r	   )r   Tr   F)Fr   r$   Fr   )N)r   )r   )r   )numpyr    r   Z_enumr   Z_ragged_arrayr   r   Z
decoratorsr   errorsr   __all__r   r   r   r   r   r   r
   r	   r"   r"   r"   r#   <module>   s6       
V     
Y2
!
'