bosqueTriangle

# 🌍 Bosque County Parcel Scraper ### Central Texas Integrated Energy & Compute Zone [![Python](https://img.shields.io/badge/Python-3.9+-blue.svg)](https://www.python.org/downloads/) [![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) [![GitHub Pages](https://img.shields.io/badge/GitHub%20Pages-Live-success)](https://williambevans.github.io/bosqueTriangle/) [![Status](https://img.shields.io/badge/Status-Active-brightgreen)]() **Professional-grade** Python scraper and interactive web visualization for Bosque County, Texas parcel data. Track solar development, active leases, and open land across **130,000 acres** of strategic energy corridor. [View Live Demo](https://williambevans.github.io/bosqueTriangle/) β€’ [Documentation](#-documentation) β€’ [Quick Start](#-quick-start) ---

✨ Features

**πŸ—ΊοΈ 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

🎯 Target Area

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  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


πŸš€ Quick Start

Installation

# 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

Run Test Scraper

# Test with small area (~50 parcels)
python test_scraper.py

Output: Creates docs/data/parcels.geojson for GitHub Pages

Launch Web Interface

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

Full Scrape

# Extract all parcels in target triangle
python scraper.py

πŸ“‚ Project Structure

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

πŸ—ΊοΈ Web Interface

### Professional Investment Presentation Design ![Dark Theme](https://img.shields.io/badge/Theme-Dark%20%231a1a1a-black?style=for-the-badge) ![Gold Accents](https://img.shields.io/badge/Accents-Gold%20%23c4a661-yellow?style=for-the-badge) ![Mobile Ready](https://img.shields.io/badge/Mobile-Responsive-blue?style=for-the-badge)

Features:

Color Coding:


πŸ“Š Data Model

Parcel Object

{
  "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 Values

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)

Infrastructure Features

{
  "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"]
}

🌐 Data Sources

Primary: TNRIS Statewide Parcels

URL: https://feature.stratmap.tnris.org/arcgis/rest/services/Parcels/StratMap_Parcels/MapServer/0

Fallback: Bosque CAD

URL: https://esearch.bosquecad.com/


βš™οΈ Configuration

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"]
  }
}

πŸ”§ Advanced Usage

Discover Alternative Endpoints

python discover_endpoint.py

Finds alternative GIS service endpoints automatically.

Custom Polygon Area

# 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]]
    ]
}

Load in QGIS

  1. Open QGIS
  2. Layer β†’ Add Layer β†’ Add Vector Layer
  3. Select output/bosque_parcels_*.geojson
  4. Style by status field (solar/lease/open)
  5. Add basemap for context

πŸ“Š Use Cases

### 🏭 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

🌟 GitHub Pages Deployment

Setup (One Time)

  1. Enable GitHub Pages
    • Go to Settings β†’ Pages
    • Source: Deploy from a branch
    • Branch: main
    • Folder: /docs
    • Click Save
  2. Generate Initial Data
    python test_scraper.py
    
  3. Deploy
    git add docs/data/parcels.geojson
    git commit -m "Add parcel data"
    git push
    
  4. Access Site (within 2 minutes)
    https://[username].github.io/bosqueTriangle/
    

Update Data

# 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


πŸ› οΈ Development

Run Tests

# Small area test (~50 parcels)
python test_scraper.py

# Verify outputs
ls -lh output/
ls -lh docs/data/

Adding Data Sources

  1. Add source to config.json
  2. Update field_mappings if needed
  3. Test with test_scraper.py
  4. Run full scrape

πŸ”’ Rate Limiting & Ethics


🚦 Troubleshooting

No data returned

python discover_endpoint.py  # Test connectivity

Web interface shows demo data

python test_scraper.py       # Generate real data

Import errors

pip install -r requirements.txt --upgrade

Playwright issues

playwright install --force chromium

πŸ“ˆ Performance

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)

πŸ“‹ Requirements


πŸ“ License

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.


πŸ“§ Contact

### H.H.H. Holdings **For investment inquiries:** πŸ“§ holdings@hhh.com --- **Built for Bevans Real Estate** *Property research and data center corridor analysis in Central Texas* [![GitHub](https://img.shields.io/badge/GitHub-bosqueTriangle-black?logo=github)](https://github.com/williambevans/bosqueTriangle) [![Website](https://img.shields.io/badge/Website-Live%20Demo-blue)](https://williambevans.github.io/bosqueTriangle/)

**Built with ❀️ for strategic land acquisition and transparency in public records** *Track development β€’ Identify opportunities β€’ Make informed decisions*