pub fn validate_coordinates_rust(coords: &[[f64; 2]]) -> (u32, Vec<String>)
Examples found in repository?
examples/basic_usage.rs (line 32)
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7 println!("fastGeoToolkit Basic Usage Examples");
8 println!("====================================");
9
10 // Example 1: Decode a polyline
11 println!("\n1. Polyline Decoding:");
12 let polyline = "_p~iF~ps|U_ulLnnqC_mqNvxq`@";
13 let coordinates = decode_polyline(polyline);
14 println!("Decoded {} points from polyline", coordinates.len());
15
16 if !coordinates.is_empty() {
17 println!("First point: [{:.6}, {:.6}]", coordinates[0][0], coordinates[0][1]);
18 println!("Last point: [{:.6}, {:.6}]",
19 coordinates[coordinates.len()-1][0],
20 coordinates[coordinates.len()-1][1]);
21 }
22
23 // Example 2: Validate coordinates
24 println!("\n2. Coordinate Validation:");
25 let test_coords = vec![
26 [40.7128, -74.0060], // Valid NYC coordinates
27 [91.0, -181.0], // Invalid coordinates
28 [0.0, 0.0], // Null island (considered invalid)
29 [51.5074, -0.1278], // Valid London coordinates
30 ];
31
32 let (valid_count, issues) = validate_coordinates_rust(&test_coords);
33 println!("Valid coordinates: {}/{}", valid_count, test_coords.len());
34 for issue in issues {
35 println!(" - {}", issue);
36 }
37
38 // Example 3: Calculate track statistics
39 println!("\n3. Track Statistics:");
40 let track = vec![
41 [40.7128, -74.0060], // NYC
42 [40.7589, -73.9851], // Times Square
43 [40.7831, -73.9712], // Central Park
44 [40.7505, -73.9934], // Empire State Building
45 ];
46
47 if let Some((distance, point_count, bbox)) = calculate_track_statistics_rust(&track) {
48 println!("Distance: {:.2} km", distance);
49 println!("Points: {}", point_count);
50 println!("Bounding box: [{:.4}, {:.4}, {:.4}, {:.4}]",
51 bbox[0], bbox[1], bbox[2], bbox[3]);
52 }
53
54 // Example 4: Simplify track
55 println!("\n4. Track Simplification:");
56 let dense_track: Vec<[f64; 2]> = (0..100)
57 .map(|i| [40.0 + i as f64 * 0.001, -74.0 + i as f64 * 0.001])
58 .collect();
59
60 let simplified = simplify_coordinates_rust(&dense_track, 0.005);
61 println!("Original points: {}", dense_track.len());
62 println!("Simplified points: {}", simplified.len());
63 println!("Reduction: {:.1}%",
64 (1.0 - simplified.len() as f64 / dense_track.len() as f64) * 100.0);
65
66 Ok(())
67}