| **πΊοΈ Interactive Map** - Dark-themed professional interface - Real-time parcel visualization - Development phase overlays - POI markers & transmission lines | **β‘ Solar Tracking** - Solar developed parcels - Active lease identification - Open land analysis - Progress visualization |
| **π Data Export** - JSON (nested structure) - GeoJSON (QGIS compatible) - CSV (spreadsheet analysis) - GitHub Pages deployment | **π§ Developer Tools** - ArcGIS REST API scraper - Automated endpoint discovery - Field mapping system - Rate limiting & retries |
βββββββββββββββββββββββββββββββββββββββββββββββ
β Clifton (SW): -97.5769, 31.7823 β
β Lake Whitney (N): -97.3618, 31.9508 β
β McLennan/Hwy 6: -97.2891, 31.7234 β
β β
β Coverage: ~130,000 acres β
β County: Bosque, Texas β
βββββββββββββββββββββββββββββββββββββββββββββββ
Bounded by: Highway 22 β’ Highway 6 β’ McLennan County Line
# Clone repository
git clone https://github.com/williambevans/bosqueTriangle.git
cd bosqueTriangle
# Install dependencies
pip install -r requirements.txt
# Optional: Install Playwright for browser scraping
playwright install chromium
# Test with small area (~50 parcels)
python test_scraper.py
Output: Creates docs/data/parcels.geojson for GitHub Pages
Option 1: GitHub Pages (Recommended)
π Live Site: https://williambevans.github.io/bosqueTriangle/
To update data:
python scraper.py # Generate new data
git add docs/data/parcels.geojson
git commit -m "Update parcel data"
git push # Site updates in ~2 min
Option 2: Local Flask Server
python web_server.py
# Open: http://localhost:5000
# Extract all parcels in target triangle
python scraper.py
bosqueTriangle/
βββ π scraper.py # Main ArcGIS REST scraper
βββ π§ͺ test_scraper.py # Small area test
βββ π discover_endpoint.py # Endpoint auto-detection
βββ π web_server.py # Flask development server
βββ π browser_scraper.py # Playwright fallback
βββ βοΈ config.json # Configuration & polygon
βββ π¦ requirements.txt # Python dependencies
β
βββ π docs/ # GitHub Pages site
β βββ index.html # Interactive map interface
β βββ _config.yml # Pages configuration
β βββ data/
β βββ parcels.geojson # Generated parcel data
β βββ infrastructure.geojson # Phases, POIs, substations
β
βββ π output/ # Timestamped exports
βββ bosque_parcels_*.json
βββ bosque_parcels_*.geojson
βββ bosque_plat_summary_*.csv
Features:
Color Coding:
{
"parcel_id": "R12345",
"owner": {
"name": "John Smith",
"mailing_address": "123 Main St, Dallas, TX 75201"
},
"situs_address": "456 County Road 789, Clifton, TX",
"legal_description": "ABSTRACT 123, SURVEY 45, ACRES 10.5",
"subdivision": "Clifton Ranch Estates",
"acreage": 10.5,
"market_value": "125000",
"status": "open",
"geometry": { "type": "Polygon", "coordinates": [[...]] }
}
| Status | Description | Map Color |
|---|---|---|
solar_developed |
Owned by solar/energy company | π¨ Gold (#c4a661) |
active_lease |
Lease or option agreement | β¬ Gray (#808080) |
open |
Available land | β¬ Dark Gray (#404040) |
{
"phases": ["PHASE 1: 3342 MW", "PHASE 2: 3342 MW", "PHASE 4: 2705 MW"],
"pois": ["POI-1: 3342V", "POI-2: 345kV", "POI-3: 345kV", "POI-4: 138kV"],
"substations": ["CLIFTON SUB: 138kV", "WHITNEY SUB: 345kV/138kV"],
"collectors": ["CENTRAL COLLECTOR: Proposed 345kV"],
"transmission": ["345kV Lines", "138kV Lines"]
}
URL: https://feature.stratmap.tnris.org/arcgis/rest/services/Parcels/StratMap_Parcels/MapServer/0
URL: https://esearch.bosquecad.com/
Edit config.json to customize:
{
"target_polygon": {
"type": "Polygon",
"coordinates": [[[lon, lat], ...]]
},
"scraper_settings": {
"rate_limit_seconds": 0.5,
"max_records_per_request": 1000,
"retry_attempts": 3,
"timeout_seconds": 30
},
"field_mappings": {
"parcel_id": ["PARCEL_ID", "PIN", "GEO_ID"],
"owner": ["OWNER", "OWNER_NAME"],
"acreage": ["ACRES", "GIS_ACRES"]
}
}
python discover_endpoint.py
Finds alternative GIS service endpoints automatically.
# test_scraper.py
test_polygon = {
"type": "Polygon",
"coordinates": [
[[-97.58, 31.78], [-97.56, 31.78],
[-97.56, 31.80], [-97.58, 31.80],
[-97.58, 31.78]]
]
}
output/bosque_parcels_*.geojsonstatus field (solar/lease/open)| ### π Energy Development - Track solar farm development - Monitor leasing activity - Identify open land clusters - Phase planning analysis | ### π’ Real Estate Intelligence - Data center corridor analysis - Transmission easement mapping - Land aggregation opportunities - Ownership pattern research |
| ### π Investment Due Diligence - Property research - Market analysis - Competitive landscape - Strategic acquisitions | ### π Public Records Access - County transparency - Development tracking - Parcel ownership history - Zoning & land use |
main/docspython test_scraper.py
git add docs/data/parcels.geojson
git commit -m "Add parcel data"
git push
https://[username].github.io/bosqueTriangle/
# Re-run scraper (updates docs/data/parcels.geojson)
python scraper.py
# Deploy update
git add docs/data/parcels.geojson
git commit -m "Update parcel data - $(date +%Y-%m-%d)"
git push
See: GITHUB_PAGES.md for complete guide
# Small area test (~50 parcels)
python test_scraper.py
# Verify outputs
ls -lh output/
ls -lh docs/data/
config.jsonfield_mappings if neededtest_scraper.pypython discover_endpoint.py # Test connectivity
python test_scraper.py # Generate real data
pip install -r requirements.txt --upgrade
playwright install --force chromium
| Metric | Value |
|---|---|
| Records per request | ~1,000 |
| Requests per second | ~2 (with rate limiting) |
| Full scrape time | 5-10 minutes |
| GitHub Pages load | < 2 seconds globally |
| Cost | $0 (free hosting) |
This project is for authorized real estate research and analysis. All parcel data remains property of respective county appraisal districts and the State of Texas.