tunned-geobr 1.0.3__py3-none-any.whl → 1.0.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
tunned_geobr/__init__.py CHANGED
@@ -127,3 +127,4 @@ from .read_quilombola_areas import read_quilombola_areas
127
127
  from .read_icmbio_embargoes import read_icmbio_embargoes
128
128
  from .read_icmbio_infractions import read_icmbio_infractions
129
129
  from .read_ibama_embargoes import read_ibama_embargoes
130
+ from .read_climate import read_climate
@@ -84,6 +84,7 @@ def list_geobr():
84
84
  {"Function": "read_geomorphology", "Geography": "Geomorphology", "Years": "All", "Source": "IBGE"},
85
85
  {"Function": "read_pedology", "Geography": "Pedology", "Years": "All", "Source": "IBGE"},
86
86
  {"Function": "read_climate_aggressiveness", "Geography": "Climate Aggressiveness", "Years": "All", "Source": "IBGE"},
87
+ {"Function": "read_climate", "Geography": "Climate", "Years": "All", "Source": "IBGE"},
87
88
 
88
89
  # Transportation and infrastructure datasets
89
90
  {"Function": "read_public_aerodromes", "Geography": "Public Aerodromes", "Years": "All", "Source": "MapBiomas"},
@@ -0,0 +1,85 @@
1
+ import geopandas as gpd
2
+ import tempfile
3
+ import os
4
+ import requests
5
+ from zipfile import ZipFile
6
+ from io import BytesIO
7
+
8
+ def read_climate(simplified=False):
9
+ """Download Brazilian Climate data from IBGE.
10
+
11
+ This function downloads and processes the Brazilian Climate data.
12
+ from IBGE (Brazilian Institute of Geography and Statistics).
13
+ Original source: IBGE - Instituto Brasileiro de Geografia e Estatística
14
+
15
+ Parameters
16
+ ----------
17
+ simplified : boolean, by default False
18
+ If True, returns a simplified version of the dataset with fewer columns
19
+
20
+ Returns
21
+ -------
22
+ gpd.GeoDataFrame
23
+ Geodataframe with Brazilian climate data
24
+
25
+ Example
26
+ -------
27
+ >>> from tunned_geobr import read_climate
28
+
29
+ # Read climate data
30
+ >>> climate = read_climate()
31
+ """
32
+
33
+ url = "https://geoftp.ibge.gov.br/informacoes_ambientais/climatologia/vetores/brasil/Clima_5000mil.zip"
34
+
35
+ try:
36
+ # Download the zip file
37
+ response = requests.get(url)
38
+ if response.status_code != 200:
39
+ raise Exception("Failed to download climate data from IBGE")
40
+
41
+ # Create a temporary directory
42
+ with tempfile.TemporaryDirectory() as temp_dir:
43
+ # Extract the zip file
44
+ with ZipFile(BytesIO(response.content)) as zip_ref:
45
+ zip_ref.extractall(temp_dir)
46
+
47
+ # Find the shapefile
48
+ shp_files = []
49
+ for root, dirs, files in os.walk(temp_dir):
50
+ shp_files.extend([os.path.join(root, f) for f in files if f.endswith('.shp')])
51
+
52
+ if not shp_files:
53
+ raise Exception("No shapefile found in the downloaded data")
54
+
55
+ # Read the shapefile
56
+ gdf = gpd.read_file(shp_files[0])
57
+
58
+ # Convert to SIRGAS 2000 (EPSG:4674) if not already
59
+ if gdf.crs is None:
60
+ gdf.crs = 4674
61
+ elif gdf.crs.to_epsg() != 4674:
62
+ gdf = gdf.to_crs(4674)
63
+
64
+ if simplified:
65
+ # Keep only the most relevant columns
66
+ # Note: Column names may need adjustment based on actual data
67
+ columns_to_keep = [
68
+ 'geometry',
69
+ 'NOME', # Vegetation name
70
+ 'TIPO', # Vegetation type
71
+ 'REGIAO', # Region
72
+ 'BIOMA', # Biome
73
+ 'AREA_KM2' # Area in square kilometers
74
+ ]
75
+
76
+ # Filter columns that actually exist in the dataset
77
+ existing_columns = ['geometry'] + [col for col in columns_to_keep[1:] if col in gdf.columns]
78
+ gdf = gdf[existing_columns]
79
+
80
+ except Exception as e:
81
+ raise Exception(f"Error downloading vegetation data: {str(e)}")
82
+ return gdf
83
+
84
+ if __name__ == '__main__':
85
+ read_climate()
@@ -4,48 +4,72 @@ import os
4
4
  import requests
5
5
  from zipfile import ZipFile
6
6
  from io import BytesIO
7
+ from requests.adapters import HTTPAdapter
8
+ from urllib3.util.retry import Retry
9
+ import time # Import time for potential delays between retries
7
10
 
8
11
  def read_sigef_properties(simplified=False):
9
- """Download Certified Properties data from INCRA's SNCI.
10
-
11
- This function downloads and processes certified properties data from INCRA's
12
- National Property Certification System (Sistema Nacional de Certificação de Imóveis - SNCI).
13
- The data includes information about certified rural properties across Brazil.
12
+ """Download SIGEF Properties data from INCRA.
13
+
14
+ This function downloads and processes rural property data from INCRA's
15
+ SIGEF (Sistema de Gestão Fundiária). The dataset contains information
16
+ about rural properties registered in the SIGEF system across Brazil.
17
+
14
18
  Original source: INCRA (Instituto Nacional de Colonização e Reforma Agrária)
15
-
19
+
16
20
  Parameters
17
21
  ----------
18
- simplified : boolean, by default False
19
- If True, returns a simplified version of the dataset with fewer columns
22
+ simplified : bool, default False
23
+ If True, returns a simplified version of the dataset with selected columns.
20
24
 
21
25
  Returns
22
26
  -------
23
27
  gpd.GeoDataFrame
24
- Geodataframe with certified properties data
25
-
28
+ GeoDataFrame with SIGEF properties data.
29
+
26
30
  Example
27
31
  -------
28
- >>> from tunned_geobr import read_snci_properties
29
-
30
- # Read certified properties data
31
- >>> properties = read_snci_properties()
32
+ >>> from tunned_geobr import read_sigef_properties
33
+
34
+ # Read SIGEF properties data
35
+ >>> properties = read_sigef_properties()
32
36
  """
33
37
 
34
38
  url = "https://certificacao.incra.gov.br/csv_shp/zip/Sigef%20Brasil.zip"
39
+
40
+ # Configure retries
41
+ retries = Retry(
42
+ total=5, # Total number of retries to allow
43
+ backoff_factor=1, # A backoff factor to apply between attempts (e.g., 1, 2, 4, 8 seconds)
44
+ status_forcelist=[500, 502, 503, 504], # HTTP status codes to retry on
45
+ allowed_methods={"GET"}, # Only retry GET requests
46
+ raise_on_status=False # Don't raise an exception on failed status codes immediately
47
+ )
48
+
49
+ # Create a session and mount the adapter with retries
50
+ session = requests.Session()
51
+ session.mount('https://', HTTPAdapter(max_retries=retries))
52
+
35
53
  try:
36
- # Download the zip file
54
+ # Download the zip file in chunks
37
55
  # Disable SSL verification due to INCRA's certificate issues
38
56
  import urllib3
39
57
  urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
40
58
 
41
- response = requests.get(url, verify=False)
42
- if response.status_code != 200:
43
- raise Exception("Failed to download data from INCRA")
59
+ # Use stream=True to download content in chunks with the session
60
+ response = session.get(url, stream=True, verify=False, timeout=300) # Added a timeout for the request
61
+ response.raise_for_status() # Raise an exception for HTTP errors (4xx or 5xx)
44
62
 
45
63
  # Create a temporary directory
46
64
  with tempfile.TemporaryDirectory() as temp_dir:
65
+ zip_file_path = os.path.join(temp_dir, "Sigef Brasil.zip")
66
+ # Write the content to the file
67
+ with open(zip_file_path, 'wb') as fd:
68
+ for chunk in response.iter_content(chunk_size=8192):
69
+ fd.write(chunk)
70
+
47
71
  # Extract the zip file
48
- with ZipFile(BytesIO(response.content)) as zip_ref:
72
+ with ZipFile(zip_file_path) as zip_ref:
49
73
  zip_ref.extractall(temp_dir)
50
74
 
51
75
  # Find the shapefile
@@ -75,7 +99,17 @@ def read_sigef_properties(simplified=False):
75
99
  existing_columns = ['geometry'] + [col for col in columns_to_keep[1:] if col in gdf.columns]
76
100
  gdf = gdf[existing_columns]
77
101
 
102
+ except requests.exceptions.Timeout:
103
+ raise Exception(f"Download timed out after {300} seconds. The file might be too large or the connection too slow.")
104
+ except requests.exceptions.ConnectionError as e:
105
+ raise Exception(f"A connection error occurred during download: {str(e)}. This might be due to network issues or server availability.")
106
+ except requests.exceptions.RequestException as e:
107
+ raise Exception(f"An unexpected request error occurred: {str(e)}")
78
108
  except Exception as e:
79
- raise Exception(f"Error downloading certified properties data: {str(e)}")
109
+ raise Exception(f"Error processing certified properties data: {str(e)}")
110
+
111
+ finally:
112
+ session.close() # Ensure the session is closed
80
113
 
81
114
  return gdf
115
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tunned-geobr
3
- Version: 1.0.3
3
+ Version: 1.0.5
4
4
  Summary: Fork personalizado do geobr com funcionalidades extras como download de dados da ANM
5
5
  Author: Anderson Stolfi
6
6
  License: MIT
@@ -1,10 +1,10 @@
1
- tunned_geobr-1.0.3.dist-info/METADATA,sha256=pcpdryP5yc-oQ69c051QRiF6s8Q0uDs32g-onas9Sak,5018
2
- tunned_geobr-1.0.3.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
3
- tunned_geobr-1.0.3.dist-info/entry_points.txt,sha256=6OYgBcLyFCUgeqLgnvMyOJxPCWzgy7se4rLPKtNonMs,34
4
- tunned_geobr-1.0.3.dist-info/licenses/LICENSE.txt,sha256=mECZRcbde3HssOKe1Co4zgqBLGVN0OWpTsEy3LIbcRA,75
5
- tunned_geobr/__init__.py,sha256=rxOGWhc2o3F8qDORi34uF4sCGouQFK74bKpuuAXWlHY,7393
1
+ tunned_geobr-1.0.5.dist-info/METADATA,sha256=-affpDgkILf1uDTzEkWj4GF2uYTo6yEbSEfH-pzB3po,5018
2
+ tunned_geobr-1.0.5.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
3
+ tunned_geobr-1.0.5.dist-info/entry_points.txt,sha256=6OYgBcLyFCUgeqLgnvMyOJxPCWzgy7se4rLPKtNonMs,34
4
+ tunned_geobr-1.0.5.dist-info/licenses/LICENSE.txt,sha256=mECZRcbde3HssOKe1Co4zgqBLGVN0OWpTsEy3LIbcRA,75
5
+ tunned_geobr/__init__.py,sha256=hOI1zU8GGz2yBn8S6kIAqwmICaJbTIQ3rvtjLaBgZUs,7432
6
6
  tunned_geobr/data/grid_state_correspondence_table.csv,sha256=FpkBuX_-lRXQ1yBrQODxQgG9oha9Fd8A8zGKfdsDAmk,2660
7
- tunned_geobr/list_geobr.py,sha256=6rsdtSZUvFrS-n5KXLOSQ34P1AK_yMFAj_MVZRvvZmQ,17278
7
+ tunned_geobr/list_geobr.py,sha256=cPi2m8jZHoYE1SpYVdvkU9rjw7MzJukt5kRTsqtiwz8,17374
8
8
  tunned_geobr/lookup_muni.py,sha256=ny1zU4i6OagvL4Mrc6XQWPgn2RrJa_mXlKXh81oVYsM,3462
9
9
  tunned_geobr/read_ama_anemometric_towers.py,sha256=M3qKBTBYdqHzTuWtRrBiLA88Ymt6g0cf7sakJd5mTRo,4686
10
10
  tunned_geobr/read_amazon.py,sha256=HiwKnYebWe3nDMDRUqHpKJIO76bA4ERm4iJlCPhagQg,1286
@@ -26,6 +26,7 @@ tunned_geobr/read_biomethane_plants.py,sha256=HP51IQB7KMTOzpfcXNNn3Gg95nUlTjuDat
26
26
  tunned_geobr/read_biosphere_reserves.py,sha256=ihW5xbRpIb-vxMr4LDKSflWVCK3mn1gZb2A_GPddR7s,3147
27
27
  tunned_geobr/read_cave_potential.py,sha256=P3LrYTQtfb0OpNAJCOWif9q5zrhI0PEgarEg2o8eNXc,3015
28
28
  tunned_geobr/read_census_tract.py,sha256=aKSvMzfAYSR0P-TDS5xyo4XSO3NRjuYgfb_psDh3kUc,4005
29
+ tunned_geobr/read_climate.py,sha256=D2-q1vvBuhiMwqXZPCr_O12ZWNj_wyZYMe7_GaUFAG8,2973
29
30
  tunned_geobr/read_climate_aggressiveness.py,sha256=Y53LYy39DNVbuVO_U3iYhyCb-Q3QQm73T2k8ZEXvtG4,2804
30
31
  tunned_geobr/read_comparable_areas.py,sha256=XUOsBiDyYX5z4fj0bofD9Ty6dW4xKRY80MSo_f69Sac,2109
31
32
  tunned_geobr/read_compression_stations.py,sha256=WH1edJ7FARZCDRJoIx-33olm_umIGBbVodWajgVrq3U,5337
@@ -122,7 +123,7 @@ tunned_geobr/read_schools.py,sha256=kxaRwuKmZDPgSuhCUd_Ltxo-6_z3b3jXY9Qo0MY_b-A,
122
123
  tunned_geobr/read_sedimentary_basins.py,sha256=mpCde4-WRdAAuHF-AwrODd0GpxRhzJOuP60U6Zbl9pE,4583
123
124
  tunned_geobr/read_semiarid.py,sha256=pxxYTWq8_UPUyblA7_FXXXRz-XOCrrebCvYQ-kgDSrU,1358
124
125
  tunned_geobr/read_settlements.py,sha256=C47Wj4DhSDa-pSFfYK4uGDwtu4sUwqPMr-CuuxS95xg,3060
125
- tunned_geobr/read_sigef_properties.py,sha256=EBqTUbL9Kg9EUPh--nYHX2OVacymq80YrPCZXKAP6sQ,3108
126
+ tunned_geobr/read_sigef_properties.py,sha256=rYdh8o_fhXom1A9wQsd5d9dKhT02wTpGRY2ACTpQZ4A,4735
126
127
  tunned_geobr/read_snci_properties.py,sha256=80VUN5NesYiNTfioaw7aybLHDNpYJObQT-kV90big-c,3233
127
128
  tunned_geobr/read_state.py,sha256=JgV3cR0LFbmwIzuzPbR_Zfy1bR_2eBeEPxunozctuag,3819
128
129
  tunned_geobr/read_state_direct.py,sha256=8Tdz-gVH_t90BJngcfcpr0VLs5HfCUxRgRQj8hy4Bt0,3826
@@ -137,4 +138,4 @@ tunned_geobr/read_water_bodies_ana.py,sha256=Z-dpTPVgRHVndTeSFxx8uXn7ufMg2jm0Dlz
137
138
  tunned_geobr/read_waterways.py,sha256=mEdoVogYWr5EYZ8bE3xMCVWyLrHYU7xTL2lUE0XbDAM,2951
138
139
  tunned_geobr/read_weighting_area.py,sha256=m2X5Ua3jRqLlkqCQbIzR2jmo58pzqkyR3UYcGtgy20E,2325
139
140
  tunned_geobr/utils.py,sha256=WT9PSGWvcERjj3yhfTvyWSE5ZiEjO4tYK5xIj5jJCg8,8170
140
- tunned_geobr-1.0.3.dist-info/RECORD,,
141
+ tunned_geobr-1.0.5.dist-info/RECORD,,