o
    Ni                     @   s   d Z ddlmZ ddlmZ ddlmZ ddlZddlm  m	Z
 ddlmZ dZg dZdd	gZd
ZG dd dejjZG dd dejjZdd ZdS )So2SAT remote sensing dataset.    )absolute_import)division)print_functionNa  So2Sat LCZ42 is a dataset consisting of co-registered synthetic aperture radar
and multispectral optical image patches acquired by the Sentinel-1 and
Sentinel-2 remote sensing satellites, and the corresponding local climate zones
(LCZ) label. The dataset is distributed over 42 cities across different
continents and cultural regions of the world.

The full dataset (`all`) consists of 8 Sentinel-1 and 10 Sentinel-2 channels.
Alternatively, one can select the `rgb` subset, which contains only the optical
frequency bands of Sentinel-2, rescaled and encoded as JPEG.

Dataset URL: http://doi.org/10.14459/2018MP1454690
License: http://creativecommons.org/licenses/by/4.0
)zCompact high-risezCompact mid-risezCompact low-risezOpen high-risezOpen mid-risezOpen low-risezLightweight low-risezLarge low-risezSparsely builtzHeavy industryzDense treeszScattered treeszBush or scrubz
Low plantszBare rock or pavedzBare soil or sandWaterrgballg     @c                       s"   e Zd ZdZd fdd	Z  ZS )So2satConfigzBuilderConfig for so2sat.Nc                    sX   |t vr
tdt  tjdd}tjdd}tt| jd||gd| || _dS )	zConstructs a So2satConfig.

    Args:
      selection: `str`, one of `_DATA_OPTIONS`.
      **kwargs: keyword arguments forwarded to super.
    zselection must be one of %sz2.0.0z6New split API (https://tensorflow.org/datasets/splits)z2.1.0z2Using updated optical channels calibration factor.)versionsupported_versionsN )	_DATA_OPTIONS
ValueErrortfdscoreVersionsuperr	   __init__	selection)selfr   kwargsv2v2_1	__class__r   c/home/ubuntu/.local/lib/python3.10/site-packages/tensorflow_datasets/image_classification/so2sat.pyr   ;   s   
zSo2satConfig.__init__)N)__name__
__module____qualname____doc__r   __classcell__r   r   r   r   r	   8   s    r	   c                   @   sD   e Zd ZdZeddddeddddgZdd Zd	d
 Zdd ZdS )So2satr   r   zSentinel-2 RGB channels)r   namedescriptionr   z'8 Sentinel-1 and 10 Sentinel-2 channelsc              	   C   s   | j jdkr&tjtjjg ddtjjtdtjjdt	j
dd}d}n1| j jd	krWtjtjjg d
t	jdtjjg dt	jdtjjtdtjjdt	j
dd}d }tjj| t||ddS )Nr   )    r$      )shape)namesr   )r&   dtypeimagelabel	sample_id)r*   r+   r   )r$   r$      )r$   r$   
   	sentinel1	sentinel2r+   r,   z%http://doi.org/10.14459/2018MP1454690)builderr#   featuressupervised_keyshomepage)builder_configr   r   r3   FeaturesDictImage
ClassLabel_LABELSTensortfint64float32r   DatasetInfo_DESCRIPTION)r   r3   r4   r   r   r   _info]   s,   
zSo2sat._infoc                 C   sT   | ddd}tjjtjj|d | jjddtjjtjj|d | jjddgS )zReturns SplitGenerators.z6ftp://m1454690:m1454690@dataserv.ub.tum.de/training.h5z8ftp://m1454690:m1454690@dataserv.ub.tum.de/validation.h5)trainvalrB   )pathr   )r"   
gen_kwargsrC   )	downloadr   r   SplitGeneratorSplitTRAINr6   r   
VALIDATION)r   
dl_managerpathsr   r   r   _split_generatorsy   s"   zSo2sat._split_generatorsc           	      c   s    t jjj|dY}|d }|d }|d }tt|D ]=}|dkr6t|| t	|| 
t|d}n|dkrU|| 
tj|| 
tjt	|| 
t|d}||fV  qW d	   d	S 1 sfw   Y  d	S )
zYields examples.rsen1sen2r+   r   r)   r   r/   N)r   r   lazy_importsh5pyFilerangelen_create_rgbnpargmaxastypeintr>   )	r   rD   r   fidrO   rP   r+   irecordr   r   r   _generate_examples   s(   
"zSo2sat._generate_examplesN)	r   r   r   r   r	   BUILDER_CONFIGSrA   rM   r^   r   r   r   r   r!   O   s     r!   c                 C   s&   t | dg df t ddt jS )N.)      r   r      )rW   clip_OPTICAL_CALIBRATION_FACTORrY   uint8)
sen2_bandsr   r   r   rV      s
   rV   )r   
__future__r   r   r   numpyrW   tensorflow.compat.v2compatr   r<   tensorflow_datasets.public_api
public_apir   r@   r:   r   rd   r   BuilderConfigr	   GeneratorBasedBuilderr!   rV   r   r   r   r   <module>   s   X