fix
Browse files- .vscode/launch.json +21 -0
- app.py +49 -38
- data/lotes espacio crea_empresa.dbf +0 -0
.vscode/launch.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"version": "0.2.0",
|
| 3 |
+
"configurations": [{
|
| 4 |
+
"name": "Python: Streamlit",
|
| 5 |
+
"type": "python",
|
| 6 |
+
"request": "launch",
|
| 7 |
+
"module": "streamlit",
|
| 8 |
+
"env": {
|
| 9 |
+
"STREAMLIT_APP": "app.py",
|
| 10 |
+
"STREAMLIT_ENV": "development",
|
| 11 |
+
"AWS_PROFILE": "root",
|
| 12 |
+
"PYTHONPATH": "${workspaceRoot}/src",
|
| 13 |
+
},
|
| 14 |
+
"args": [
|
| 15 |
+
"run",
|
| 16 |
+
"D:/Terradot/huggingface/df_align/app.py"
|
| 17 |
+
],
|
| 18 |
+
"jinja": true
|
| 19 |
+
}
|
| 20 |
+
]
|
| 21 |
+
}
|
app.py
CHANGED
|
@@ -32,8 +32,8 @@ st.sidebar.title('Proyecto Crea')
|
|
| 32 |
st.sidebar.write('Solo uso interno')
|
| 33 |
# add sidebar with 2 upload buttons
|
| 34 |
st.sidebar.header('Upload Files')
|
| 35 |
-
uploaded_file = st.sidebar.file_uploader('Upload your shapefile', type=['shp', 'geojson', 'json'])
|
| 36 |
-
uploaded_file2 = st.sidebar.file_uploader('Upload your csv file', type=['csv'])
|
| 37 |
|
| 38 |
if uploaded_file is not None:
|
| 39 |
lotes_gdf = convert_to_gdf(uploaded_file)
|
|
@@ -118,46 +118,51 @@ if test:
|
|
| 118 |
lotes_gdf['campo_obs'] = lotes_gdf['campo'].map(similar_dict)
|
| 119 |
|
| 120 |
cutoff = 0.3
|
| 121 |
-
for campo , df in lotes_gdf.groupby('campo'):
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
|
| 140 |
|
| 141 |
def show_field(key):
|
|
|
|
|
|
|
|
|
|
| 142 |
with col3:
|
| 143 |
# st.header(st.session_state['key'])
|
| 144 |
st.header('Lote')
|
| 145 |
-
df_field = lotes_gdf[lotes_gdf['campo'] ==
|
| 146 |
fields = df_field['lote'].unique().tolist()
|
| 147 |
-
|
| 148 |
with st.form("fields_form"):
|
|
|
|
| 149 |
for j,field in enumerate(fields):
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
|
| 159 |
|
| 160 |
-
|
|
|
|
| 161 |
|
| 162 |
|
| 163 |
def on_click(key):
|
|
@@ -169,14 +174,20 @@ if test:
|
|
| 169 |
with col2:
|
| 170 |
st.header('Campo')
|
| 171 |
for i, key in enumerate(all_keys):
|
| 172 |
-
|
| 173 |
-
selected_value = st.multiselect(f'{key} (.shp):', campo_obs, default=similar_dict_df[similar_dict_df['gdf'] == key]['obs'].values[0], key=i)
|
|
|
|
|
|
|
| 174 |
if selected_value:
|
| 175 |
-
similar_dict_df.loc[similar_dict_df['gdf'] == key, 'obs'] = selected_value
|
|
|
|
|
|
|
| 176 |
else:
|
| 177 |
-
similar_dict_df.loc[similar_dict_df['gdf'] == key, 'obs'] = 'no match'
|
|
|
|
|
|
|
| 178 |
|
| 179 |
-
st.button('Show Fields', key=key, on_click=on_click(key))
|
| 180 |
|
| 181 |
|
| 182 |
# st.dataframe(similar_dict_df)
|
|
@@ -191,7 +202,7 @@ if test:
|
|
| 191 |
st.sidebar.download_button(
|
| 192 |
label="Download GeoJSON",
|
| 193 |
data=lotes_gdf.to_json().encode('utf-8'),
|
| 194 |
-
file_name='
|
| 195 |
# mime='text/csv',
|
| 196 |
mime = 'application/json',
|
| 197 |
)
|
|
|
|
| 32 |
st.sidebar.write('Solo uso interno')
|
| 33 |
# add sidebar with 2 upload buttons
|
| 34 |
st.sidebar.header('Upload Files')
|
| 35 |
+
uploaded_file = st.sidebar.file_uploader('Upload your shapefile', type=['shp', 'geojson', 'json'], disabled = True)
|
| 36 |
+
uploaded_file2 = st.sidebar.file_uploader('Upload your csv file', type=['csv'], disabled = True)
|
| 37 |
|
| 38 |
if uploaded_file is not None:
|
| 39 |
lotes_gdf = convert_to_gdf(uploaded_file)
|
|
|
|
| 118 |
lotes_gdf['campo_obs'] = lotes_gdf['campo'].map(similar_dict)
|
| 119 |
|
| 120 |
cutoff = 0.3
|
| 121 |
+
# for campo , df in lotes_gdf.groupby('campo'):
|
| 122 |
+
# for i, row in df.iterrows():
|
| 123 |
+
# c_obs = obs_df_2023.loc[obs_df_2023.Campo == row.campo_obs]
|
| 124 |
+
# lote_obs = c_obs.Lote.unique()
|
| 125 |
+
# # normalize the stings to lowercase and remove punctuation
|
| 126 |
+
# lote_obs_norm = [str(c).lower() for c in lote_obs]
|
| 127 |
+
# lote_obs_norm = [c.replace('.', ' ') for c in lote_obs_norm]
|
| 128 |
+
# similar_items = get_close_matches(row.lote, lote_obs_norm, N, cutoff)
|
| 129 |
+
# # get the index of the most similar item
|
| 130 |
+
# similar_items_idx = [lote_obs_norm.index(i) for i in similar_items]
|
| 131 |
+
|
| 132 |
+
# # get the most similar item in the original list
|
| 133 |
+
# similar_items = [lote_obs[i] for i in similar_items_idx]
|
| 134 |
+
|
| 135 |
+
# if similar_items:
|
| 136 |
+
# lotes_gdf.loc[i, 'lote_obs'] = similar_items[0]
|
| 137 |
+
# else:
|
| 138 |
+
# lotes_gdf.loc[i, 'lote_obs'] = "no match"
|
| 139 |
|
| 140 |
|
| 141 |
def show_field(key):
|
| 142 |
+
key, selected_value = key
|
| 143 |
+
lote_obs = obs_df_2023[obs_df_2023['Campo'] == selected_value]['Lote'].unique().tolist()
|
| 144 |
+
lote_obs.insert(0, 'no match')
|
| 145 |
with col3:
|
| 146 |
# st.header(st.session_state['key'])
|
| 147 |
st.header('Lote')
|
| 148 |
+
df_field = lotes_gdf[lotes_gdf['campo'] == key]
|
| 149 |
fields = df_field['lote'].unique().tolist()
|
| 150 |
+
|
| 151 |
with st.form("fields_form"):
|
| 152 |
+
|
| 153 |
for j,field in enumerate(fields):
|
| 154 |
+
similar_items = get_close_matches(field, lote_obs, 3, 0.70)
|
| 155 |
+
default = similar_items[0] if similar_items else 'no match'
|
| 156 |
+
# selected_value = st.multiselect(f'{field} (.shp):', lote_obs, default=default, key='field'+str(j))
|
| 157 |
+
selected_value = st.selectbox(f'{field} (.shp):', lote_obs, index = lote_obs.index(default) , key='field'+str(j))
|
| 158 |
+
|
| 159 |
+
# if selected_value:
|
| 160 |
+
# lotes_gdf.loc[(lotes_gdf['campo'] == key) & (lotes_gdf['lote'] == field), 'lote_obs'] = selected_value
|
| 161 |
+
# else:
|
| 162 |
+
lotes_gdf.loc[(lotes_gdf['campo'] == key) & (lotes_gdf['lote'] == field), 'lote_obs'] = default
|
| 163 |
|
| 164 |
+
if st.form_submit_button("Submit"):
|
| 165 |
+
st.dataframe(lotes_gdf.drop(columns=['geometry','nombre','apellido','campo','campo_obs']))
|
| 166 |
|
| 167 |
|
| 168 |
def on_click(key):
|
|
|
|
| 174 |
with col2:
|
| 175 |
st.header('Campo')
|
| 176 |
for i, key in enumerate(all_keys):
|
| 177 |
+
selected_value = st.selectbox(f'{key}:', campo_obs, index=campo_obs.index(similar_dict_df[similar_dict_df['gdf'] == key]['obs'].values[0]))
|
| 178 |
+
# selected_value = st.multiselect(f'{key} (.shp):', campo_obs, default=similar_dict_df[similar_dict_df['gdf'] == key]['obs'].values[0], key=i)
|
| 179 |
+
lotes_gdf.loc[(lotes_gdf['campo'] == key) & (lotes_gdf['empresa'] == selected_company), 'campo_obs'] = similar_dict_df[similar_dict_df['gdf'] == key]['obs'].values[0]
|
| 180 |
+
|
| 181 |
if selected_value:
|
| 182 |
+
similar_dict_df.loc[similar_dict_df['gdf'] == key, 'obs'] = selected_value
|
| 183 |
+
value = selected_value
|
| 184 |
+
lotes_gdf.loc[(lotes_gdf['campo'] == key) & (lotes_gdf['empresa'] == selected_company), 'campo_obs'] = selected_value
|
| 185 |
else:
|
| 186 |
+
# similar_dict_df.loc[similar_dict_df['gdf'] == key, 'obs'] = 'no match'
|
| 187 |
+
value = similar_dict_df.loc[similar_dict_df['gdf'] == key, 'obs']
|
| 188 |
+
lotes_gdf.loc[(lotes_gdf['campo'] == key) & (lotes_gdf['empresa'] == selected_company), 'campo_obs'] = value
|
| 189 |
|
| 190 |
+
st.button('Show Fields', key=key, on_click=on_click([key,value]))
|
| 191 |
|
| 192 |
|
| 193 |
# st.dataframe(similar_dict_df)
|
|
|
|
| 202 |
st.sidebar.download_button(
|
| 203 |
label="Download GeoJSON",
|
| 204 |
data=lotes_gdf.to_json().encode('utf-8'),
|
| 205 |
+
file_name=f'{selected_company}.geojson',
|
| 206 |
# mime='text/csv',
|
| 207 |
mime = 'application/json',
|
| 208 |
)
|
data/lotes espacio crea_empresa.dbf
CHANGED
|
Binary files a/data/lotes espacio crea_empresa.dbf and b/data/lotes espacio crea_empresa.dbf differ
|
|
|