Python Cost Estimator for GPR Route Surveys

Python Cost Estimator for GPR Route Surveys EduTechBuddy.com © edutechbuddy.com
Python Cost Estimator for GPR Route Surveys © edutechbuddy.com
Learn how to build a simple, dependency-free Python tool to estimate costs for ground penetrating radar (GPR) route surveys, including rate cards, minimum billing, and GST calculations.

Teams planning telecom, power, or pipeline projects often need to estimate budgets for ground penetrating radar (GPR) route surveys. Survey costs hinge on the type of survey, total distance, minimum billable length, and taxes. A straightforward Python script can handle these calculations, helping project planners and tender writers generate precise estimates.

Understanding GPR Survey Pricing

In India, GPR survey procurement usually happens through project-specific tenders rather than a single national tariff. For instance, a municipal tender for Bhiwadi listed an "Underground Facility Survey By Ground Penetration Radar Method" with values from about ₹23.45 lakh to ₹2.27 crore, depending on scope and deliverables. These numbers show that geography, deliverables, and contract duration can shift the final budget, and there is no fixed per-metre national benchmark (Tender Detail).

Another listing for a topographical and utility survey using GPR at the CRPF campus in Bhubaneswar was valued at ₹9.90 lakh. The work covered the entire campus and was performed according to site conditions (Orissa Tenders). This shows that project-specific factors—like survey area, deliverables, and mapping needs—are crucial for budgeting, and a simple distance calculation misses key commercial details.

The published GPR survey price list sets standard route surveys at Rs 24 per meter and L-section (depth profile) surveys at Rs 32 per meter. Each job has a minimum billable length of 4,000 meters, with GST added to the subtotal. This basic estimator does not include volume discounts or mobilization and drawing charges. Public service-market listings for geophysical groundwater surveys show indicative ranges of ₹20,000 to ₹50,000, but these are not official rate cards and relate to different services (Justdial).

Python Implementation

The Python code below estimates GPR survey costs using these rules. It defines survey segments, applies the right rates, checks for minimum billing, and calculates GST. No external libraries are needed, so it fits easily into planning scripts or Jupyter notebooks.

from dataclasses import dataclass

RATES_PER_M = {"standard": 24.0, "l_section": 32.0}  # INR per metre
MIN_LENGTH_M = 4_000  # 4 km minimum per job

@dataclass
class Segment:
    name: str
    length_m: float
    survey: str = "standard"  # or "l_section"

def estimate(segments, gst_rate=0.18):
    lines, subtotal = [], 0.0
    total_len = sum(s.length_m for s in segments)  # Minimum billing applies to the whole job; bill any shortfall at the standard rate
    shortfall = max(0.0, MIN_LENGTH_M - total_len)
    for s in segments:
        cost = s.length_m * RATES_PER_M[s.survey]
        lines.append((s.name, s.survey, s.length_m, cost))
        subtotal += cost
    if shortfall:
        cost = shortfall * RATES_PER_M["standard"]
        lines.append(("minimum-length top-up", "standard", shortfall, cost))
        subtotal += cost
    gst = subtotal * gst_rate
    return lines, subtotal, gst, subtotal + gst

route = [
    Segment("Main road stretch", 2_600),
    Segment("NH crossing (HDD)", 180, "l_section"),
    Segment("Service lane", 750),
]

lines, sub, gst, total = estimate(route)

for name, kind, m, c in lines:
    print(f"{name:<24}{kind:<11}{m:>8,.0f} m Rs {c:>10,.0f}")
print(f"{'Subtotal':<43}Rs {sub:>10,.0f}")
print(f"{'GST @18%':<43}Rs {gst:>10,.0f}")
print(f"{'Total':<43}Rs {total:>10,.0f}")

Sample Output

Running the script with the example segments gives a detailed cost breakdown:

Main road stretch      standard       2,600 m Rs     62,400
NH crossing (HDD)      l_section         180 m Rs      5,760
Service lane           standard         750 m Rs     18,000
minimum-length top-up  standard         470 m Rs     11,280
Subtotal                                      Rs     97,440
GST @18%                                      Rs     17,539
Total                                         Rs    114,979

Key Points for Practical Use

  • Segment modeling: Defining each segment separately lets you apply different survey types, such as using an L-section survey for crossings that need depth profiling.
  • Minimum billing: If the total surveyed length is under 4,000 meters, the script adds a top-up to meet the minimum charge.
  • GST parameterization: The GST rate is a function parameter, so it can be changed if tax rates are updated.

Indian service classifications treat geological and geophysical consulting services and subsurface surveying services as separate categories under SAC heading 9983. Tax treatment depends on the exact service provided, not just on using GPR equipment (Finaccle). Professional, technical, and business services in this SAC group usually carry an 18% GST rate, but the actual rate depends on the service description, supplier, recipient, and notification. The estimator's 18% GST default is an assumption, and users should confirm the classification before invoicing. The Government of India clarified that works-contract services for offshore oil-and-gas exploration and production are taxed at 18% GST, but this is sector-specific and does not automatically apply to all GPR route surveys (Press Information Bureau).

India's e-procurement system lets tenderers download schedules and submit bids online. Since GPR work is often commissioned through tenders with set technical schedules, the bid documents—not a generic calculator—govern the required methodology, line items, taxes, mobilization, drawings, and acceptance criteria. Tender examples show different project values, including a campus survey at ₹9.90 lakh and Bhiwadi listings from about ₹23.45 lakh to ₹2.27 crore. A Python estimator works best as an early budgeting and scenario tool, while final tender pricing should be checked against the specific procurement schedule and tax rules.

This estimator can be adapted to read segment data from a CSV file or GIS export, making it quick to calculate budgets for proposals or tender documents. For more advanced needs, such as volume discounts or extra services, consult the official rate card for details.

Camila Ferreira Editor EduTechBuddy.com
Co-Founder

Camila Ferreira

Camila Ferreira is the Co-Founder of EduTechBuddy, where her editorial focus is programming education and practical software development skills. Her primary subjects include Python programming, Git version control, and the fundamental concepts beginners need to understand when working with code.