ws-dottie
Version:
Your friendly TypeScript companion for Washington State transportation APIs - WSDOT and WSF data with smart caching and React Query integration
194 lines (141 loc) • 7.99 kB
Markdown
for Washington State highways, including vertical clearance measurements and bridge location data.
This module provides access to the WSDOT Bridge Clearances API, which offers bridge clearance data for specific routes, vertical clearance measurements, and bridge location information.
| Feature | Description | Availability |
|---------|-------------|--------------|
| **Bridge Clearances** | Vertical clearance measurements for all bridges | ✅ Available |
| **Location Data** | Geographic coordinates and milepost information | ✅ Available |
| **Route Filtering** | Filter bridges by specific highway routes | ✅ Available |
| **Clearance Details** | Maximum and minimum clearance measurements | ✅ Available |
| **Bridge Information** | Bridge numbers, descriptions, and structural data | ✅ Available |
| Data Type | Update Frequency | Cache Strategy | Notes |
|-----------|------------------|----------------|-------|
| **Bridge Clearances** | Static | `WEEKLY_UPDATES` | Updated when bridge modifications occur |
| **Location Data** | Static | `WEEKLY_UPDATES` | Infrastructure data |
| **Bridge Information** | Static | `WEEKLY_UPDATES` | Structural data |
- **[WSDOT Bridge Clearances API Documentation](https://wsdot.wa.gov/traffic/api/Documentation/class_clearance.html)**
- **[WSDOT Bridge Clearances API Help](https://wsdot.wa.gov/traffic/api/Bridges/ClearanceREST.svc/Help)**
| Endpoint | Method | Description | Parameters | Returns |
|----------|--------|-------------|------------|---------|
| `GetClearancesAsJson` | GET | Get bridge clearance data | `AccessCode`, `Route` (optional) | `BridgeDataGIS[]` |
```
https://wsdot.wa.gov/Traffic/api/Bridges/ClearanceREST.svc
```
```typescript
import { WsdotBridgeClearances } from 'ws-dottie';
// Get all bridge clearances
const clearances = await WsdotBridgeClearances.getBridgeClearances({ route: "" });
// Get bridge clearances for specific route
const routeClearances = await WsdotBridgeClearances.getBridgeClearances({ route: "005" });
```
| Function | Parameters | Example | Description |
|----------|------------|---------|-------------|
| `getBridgeClearances` | None | `getBridgeClearances()` | Get all bridge clearances |
| `getBridgeClearances` | `{ route: string }` | `getBridgeClearances({ route: "005" })` | Get clearances for specific route |
See Data Types below. Functions return arrays of `BridgeDataGIS`.
```typescript
// Example 1: Display all bridge clearances
const clearances = await WsdotBridgeClearances.getBridgeClearances({ route: "" });
clearances.forEach(bridge => {
console.log(`${bridge.BridgeNumber}: ${bridge.VerticalClearanceMaximumFeetInch} clearance`);
});
// Example 2: Filter bridges by route
const routeClearances = await WsdotBridgeClearances.getBridgeClearances({ route: "005" });
// Display I-5 bridge clearances
```
For comprehensive React Query hooks, TanStack Query setup, error handling, and caching strategies, see the [API Reference](../API-REFERENCE.md) documentation.
| Hook | Parameters | Description | Caching Strategy |
|------|------------|-------------|------------------|
| `useBridgeClearances` | None | Get all bridge clearances | `WEEKLY_UPDATES` |
| `useBridgeClearances` | `{ route: string }` | Get clearances for specific route | `WEEKLY_UPDATES` |
```typescript
import { useBridgeClearances } from 'ws-dottie';
function BridgeClearancesList() {
const { data, isLoading, error } = useBridgeClearances();
if (isLoading) return <div>Loading bridge clearances...</div>;
if (error) return <div>Error: {error.message}</div>;
return (
<div>
{data?.map(bridge => (
<div key={bridge.BridgeNumber}>
<h3>Bridge {bridge.BridgeNumber}</h3>
<p>Description: {bridge.CrossingDescription}</p>
<p>Maximum Clearance: {bridge.VerticalClearanceMaximumFeetInch}</p>
<p>Route: {bridge.StateRouteID}</p>
</div>
))}
</div>
);
}
```
| Type Name | Description | Key Properties |
|-----------|-------------|----------------|
| `BridgeDataGIS` | Bridge clearance and location data | `BridgeNumber`, `CrossingDescription`, `VerticalClearanceMaximumFeetInch`, `Latitude`, `Longitude`, `SRMP` |
```typescript
type BridgeDataGIS = {
BridgeNumber: string; // Unique bridge identifier
CrossingDescription: string; // Description of what the bridge crosses
VerticalClearanceMaximumFeetInch: string; // Maximum vertical clearance in feet and inches
VerticalClearanceMinimumFeetInch: string; // Minimum vertical clearance in feet and inches
VerticalClearanceMaximumInches: number; // Maximum clearance in inches
VerticalClearanceMinimumInches: number; // Minimum clearance in inches
Latitude: number; // Latitude coordinate of the bridge
Longitude: number; // Longitude coordinate of the bridge
SRMP: number; // State Route Milepost
StateRouteID: string; // State route identifier
};
```
**Scenario**: Create a comprehensive database of all bridge clearances for transportation planning
**Solution**: Use the `getBridgeClearances` function to fetch all bridge data and store it in a database
```typescript
// Implementation example
const clearances = await WsdotBridgeClearances.getBridgeClearances({ route: "" });
// Store in database for transportation planning applications
```
**Scenario**: Analyze bridge clearances for a specific highway route (e.g., I-5)
**Solution**: Use the `getBridgeClearances` function with route filtering
```typescript
// Implementation example
const routeClearances = await WsdotBridgeClearances.getBridgeClearances({ route: "005" });
// Analyze I-5 bridge clearances for transportation planning
```
This API uses the **WEEKLY_UPDATES** caching strategy. For detailed information about caching configuration, performance optimization, and advanced caching options, see the [Performance & Caching](../API-REFERENCE.md
| Caching Aspect | Configuration | Description |
|----------------|---------------|-------------|
| **Stale Time** | 7 days | Data considered fresh for 7 days |
| **Refetch Interval** | 7 days | Automatically refetch data every 7 days |
| **GC Time** | 14 days | Keep unused data in cache for 14 days |
| **Retry** | 3 attempts | Retry failed requests up to 3 times |
Bridge clearance and metadata are largely static; weekly refresh is sufficient.
For information about data transformation, error handling, caching strategies, and other common patterns, see the [API Reference](../API-REFERENCE.md) documentation.
- **[Error Handling](../API-REFERENCE.md
- **[Data Transformation](../API-REFERENCE.md
- **[React Hooks](../API-REFERENCE.md
- **[Performance & Caching](../API-REFERENCE.md
- **[Testing Status](../API-REFERENCE.md
- **[API Compliance](../API-REFERENCE.md
The WSDOT Bridge Clearances API provides bridge clearance information