use ↔ to navigate
GIS On A Diet
https://tinyurl.com/ybmeqd38
Blair Deaver Aspect Consulting, LLC.
Topics:
  1. Slow Maps Are Expensive
  2. Measure Map Performance Before You Publish/Ship
  3. 30 Day Plan10 Minute Plan!?!
Topics:
  1. Slow Maps Are Expensive
  2. Measure Map Performance Before You Publish/Ship
  3. 30 Day Plan10 Minute Plan!?!
User Adoption/UX
Expensive Production Time
Understand the performance of your data and maps BEFORE you go to production
Topics:
  1. Slow Maps Are Expensive
  2. Measure Map Performance Before You Publish/Ship
  3. 30 Day Plan10 Minute Plan!?!
Measurement Tools
1. ArcGIS Monitor
Pros:
Cons:
2. PerfTools for ArcGIS Pro
PerfTools is Great For Establishing a Performance Baseline
Before Your Data is in'Production'
Great for iterative testing
Scriptable!
PTStart.exe "C:\projects\aspect\orurisa\vector_performance_postgis_no_generalized.aprx" "/scr=C:\projects\aspect\orurisa\Bend_Bing_Tile_Performance.scr" /max "/log=C:\projects\aspect\orurisa\bend_bing_tile_postgis_no_generalized_performance.log" /noappend
Generate Logs
Level 12, Vector Performance, 00:00:03.9197756, 391.500114998994, 199.275177849664, 36, 2019-02-07T17:57:27.7078967Z
2. QGIS Metrics
Use 'Log Messages' Panel to View Throughput
Topics:
  1. Slow Maps Are Expensive
  2. Measure Map Performance Before You Publish/Ship
  3. 30 Day Plan10 Minute Plan!?!

Performance Tuning Tips
Top Five {opinionated}:
  1. Trim Down Queries - Scale Dependent & Minimum SQL
  2. Move Raw Imagery to the Cloud + Use Cloud Image Formats {MRF & COG}
  3. Generalize Features When Possible
  4. Use Materialized | Index SQL Views
Top Five {opinionated}:
  1. Trim Down Queries - Scale Dependent & Minimum SQL
  2. Move Raw Imagery to the Cloud + Use Cloud Image Formats {MRF & COG}
  3. Generalize Features When Possible
  4. Use Materialized | Index SQL Views
Use Scale Dependent Rendering to Limit Payload for Both Symbology And Labeling
Either Via The Layer Properties or Via a DB View - Limit Number of Fields Returned
Top Five {opinionated}:
  1. Trim Down Queries - Scale Dependent & Minimum SQL
  2. Move Raw Imagery to the Cloud + Use Cloud Image Formats {MRF & COG}
  3. Generalize Features When Possible
  4. Use Materialized | Index SQL Views
Cloud Block Storage
{AWS | Azure | GCP}
is cheap
New Cloud Imagery FormatsMRF and COG
ArcGIS Cloud Storage Connection via Pro 2.3
Benchmark - Network Attached Storage -
1:50000 | 2.81 seconds
Benchmark - Network Cloud Storage -
1:50000 | .17 seconds
Use Esri OptimizeRasters Tools
Top Five {opinionated}:
  1. Trim Down Queries - Scale Dependent & Minimum SQL
  2. Move Raw Imagery to the Cloud + Use Cloud Image Formats {MRF & COG}
  3. Generalize Features When Possible
  4. Use Materialized | Index SQL Views
SELECT st_simplify(st_transform(or_parcels.crook_co_parcels.geom, 2992), 1.0::double precision) AS GEOM, or_parcels.crook_co_parcels.id AS OBJECTID, or_parcels.crook_co_parcels.taxlot as TAXLOT FROM or_parcels.crook_co_parcels WHERE ST_Area(geom) > 10000 limit 500;
Use Generalization
in Tandem with Scale Dependency {Nested Layers}
Top Five {opinionated}:
  1. Trim Down Queries - Scale Dependent & Minimum SQL
  2. Move Raw Imagery to the Cloud + Use Cloud Image Formats {MRF & COG}
  3. Generalize Features When Possible
  4. Use Materialized | Index SQL Views
Materialized View is More Than a View
CREATE MATERIALIZED VIEW washington_land.vw_washington_taxlots AS SELECT uuid_generate_v4() AS objectid, st_transform(asotin_taxlots.geom, 2927) AS geom, asotin_taxlots.parcel_id AS pin FROM washington_land.asotin_taxlots;
Works well for data that needs to be populated/hydrated at an interval (i.e. daily | weekly)
Things That Helped Me:
  1. Docker Images With Data & DBs
  2. Be Comfortable with SQL {EXPLAIN}
  3. Test On Minimal Hardare
  4. Synology NAS Device(s)
Our Challenge
1. Know The Performance Baseline of Your Data
2. Fast Maps = {Happy Apps | Happy Users}
I Would Love To Hear Your Performance Tricks - Thank You
https://tinyurl.com/ybmeqd38