Formulario:
Filtro: Bronx o Manhatan y arson
((( ("nypd"."BORO_NM" = 'BRONX') ) OR ( ("nypd"."BORO_NM" = 'MANHATTAN') )) AND ( ("nypd"."OFNS_DESC" = 'ARSON') ))
Campos calculados:
Campo: CONTEO
Formula:
1
Campo: AÑO
Formula:
EXTRACT(YEAR FROM CMPLNT_FR_)
Campo: MES
Formula:
EXTRACT(MONTH FROM CMPLNT_FR_)
Campo: TIPODIA
Formula:
CASE WHEN CMPLNT_FR_.getDay() <5 THEN
'Lab'
ELSE
'No lab'
END CASE
Desempleo en ese momento:
Requisito tener abierta la tabla a la que se hace referencia o establecida en el Workspace. En este caso su nombre es: data_desempleo
Campo: DESEMPLEO
Formula:
((SELECT * FROM data_desempleo WHERE nypd.BORO_NM = data_desempleo.BORO AND data_desempleo.AÑO = EXTRACT(YEAR FROM nypd.CMPLNT_FR_) AND data_desempleo.MES = EXTRACT(MONTH FROM nypd.CMPLNT_FR_))[0]).DESEMPLEO
Campo: VALOR
Formula:
CASE WHEN CONTEO < 400 THEN 'LOW'
WHEN CONTEO >= 400 AND CONTEO <3000 THEN 'MID'
WHEN CONTEO >=3000 THEN 'HIGH'
ELSE 'No data'
END CASE
Filtrados por valores alfanumericos:
EXTRACT(MONTH FROM CMPLNT_FR_) = 11 OR EXTRACT(MONTH FROM CMPLNT_FR_) = 12
Filtrados por geometria:
ST_Intersects(GEOMETRY, ST_GeomFromText('POLYGON ((985010 207515, 1008383 202121, 1007870 179518, 982441 185169, 985010 207515))'))
ST_Intersects(GEOMETRY, ST_Buffer(ST_GeomFromText('POINT (993486.320434 197840.660727)'),30000))
Exportacion
Formula:
(( ("nypd"."BORO_NM" = 'BRONX') ) AND ( ("nypd"."OFNS_DESC" = 'ARSON') ))
Filtros aplicados en la simbologia de mapa de calor por diferencia:
EXTRACT(MONTH FROM CMPLNT_FR_) = 11
EXTRACT(MONTH FROM CMPLNT_FR_) = 12
Dashboard
Ejemplo 1: Ratios
Capa de delitos
- Actualiza sobre la Vista
- Al cambiar de capa cambia el comportamiento
begin
swing(
set map to application().getActiveDocument().getMapContext(),
set bbox to map.getViewPort().getEnvelope().getGeometry(),
set layer to map.getLayers().getActives()[0]
);
set s to 'ST_intersects(GEOMETRY,ST_GeomFromText('''||bbox.convertTo('wkt') || '''))';
set fss = layer.getFeatureStore().getFeatureSet(s);
set attr = layer.getFeatureStore().getDefaultFeatureType().get('LAW_CAT_CD');
set count1 = fss.getSize();
IF attr IS NOT NULL THEN
set fss = layer.getFeatureStore().getFeatureSet(s + 'AND LAW_CAT_CD=''MISDEMEANOR''');
set count2 = fss.getSize();
set fss = layer.getFeatureStore().getFeatureSet(s + 'AND LAW_CAT_CD=''FELONY''');
set count3 = fss.getSize();
'
Conteo total: ' || count1 || '
Delito leve: ' || count2 || '
Delito grave: ' || count3 || '
Ratio: ' ||TODOUBLE(count2)/count3 ;
ELSE
'
Conteo total
' || count1;
END IF;
except
'---'
end
Ejemplo 2: Distribucion de la poblacion en las parcelas
Requisitos:
- Capa población valencia
Preparacion de los datos:
- Campo tipo1: CASE WHEN ST_AREA(GEOMETRY)>8000 THEN '>8000' ELSE '<8000' END
- Campo tipo2: categoria trama urbana
begin
swing(
set map to application().getActiveDocument().getMapContext(),
set bbox to map.getViewPort().getEnvelope().getGeometry(),
set layer to map.getLayers().getActives()[0]
);
set s to 'ST_intersects(GEOMETRY,ST_GeomFromText('''||bbox.convertTo('wkt') || '''))';
set fss = layer.getFeatureStore().getFeatures(s);
set chart = {
chartType: 'boxandwhisker',
title: 'Distribucion poblacion',
valueField: 'pob_total',
field1: 'tipo1',
field2: 'tipo2',
witdh:300,
height:200};
set p = create_chartpanel(chart, fss);
p;
except
'---'
end
Ejemplo 3: datos boro con seleccion
Sobre la tabla de borodata
y la ficha de busqueda
begin
set doc to application().getCurrentProject().getActiveDocument('project.document.table');
set fss = doc.getFeatureStore().getFeatureSelection();
if fss.isEmpty() then
set fss = doc.getFeatureStore().getFeatureSet();
end if
set chart = {
chartType: 'barchart',
title: 'Poblacion',
valueField: 'POBLACION',
field1: 'BORO',
field2: 'AÑO',
witdh:300,
height:200};
set p = create_chartpanel(chart, fss);
--p;
end