diff --git a/dist/api/stn.d.ts b/dist/api/stn.d.ts
index db8c7fc6e7d3ac04d5a6ad36c792eab5b585898c..0313b0442bfb42952d99ca381daa63b917812e1e 100644
--- a/dist/api/stn.d.ts
+++ b/dist/api/stn.d.ts
@@ -108,3 +108,4 @@ export declare function getSnappedPoint(yr: number, routeId: number, lon: number
  * @param {(e: iError) => any} error
  */
 export declare function getStnSegment(yr: number, routeId: number, lonStart: number, latStart: number, lonEnd: number, latEnd: number, searchDistance?: number, callback?: (d: iGeoJsonStnSegment) => any, error?: (e: iError) => any): void;
+export declare function getStnSegmentByMiles(yr: number, routeId: number, startMile: number, endMile: number, callback?: (d: iGeoJsonStnSegment) => any, error?: (e: iError) => any): void;
diff --git a/dist/api/stn.js b/dist/api/stn.js
index 56dabf36c5057c7f75f18e99d41b95ce6c1acb16..43e754f974af2cdad1130db048ad35f8e5f29130 100644
--- a/dist/api/stn.js
+++ b/dist/api/stn.js
@@ -115,4 +115,26 @@ function getStnSegment(yr, routeId, lonStart, latStart, lonEnd, latEnd, searchDi
     }, error);
 }
 exports.getStnSegment = getStnSegment;
+function getStnSegmentByMiles(yr, routeId, startMile, endMile, callback, error) {
+    if (callback === void 0) { callback = function (d) {
+        console.log(d);
+    }; }
+    if (error === void 0) { error = function (e) {
+        console.log(e);
+    }; }
+    ajx.get(exports.stnApiUrl + '/segment', function (d) {
+        if (d['error']) {
+            error(d);
+        }
+        else {
+            callback(d);
+        }
+    }, {
+        year: yr,
+        route: routeId,
+        startMile: startMile,
+        endMile: endMile
+    }, error);
+}
+exports.getStnSegmentByMiles = getStnSegmentByMiles;
 //# sourceMappingURL=stn.js.map
\ No newline at end of file
diff --git a/dist/api/stn.js.map b/dist/api/stn.js.map
index 0ed43b5ca7ba623e01c957c21445ee0b53a1a974..6ae584d602bba2e558cecdaece8f621b7370d8d7 100644
--- a/dist/api/stn.js.map
+++ b/dist/api/stn.js.map
@@ -1 +1 @@
-{"version":3,"file":"stn.js","sourceRoot":"","sources":["../../src/api/stn.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Created by glenn on 6/13/2017.\r\n */\r\n\r\nimport * as ajx from './axios';\r\nimport {apiRoot} from './host';\r\n\r\nexport const stnApiUrl = apiRoot + '/stn';\r\n\r\nfunction _abortHelper(x: XMLHttpRequest) {\r\n    if (x && x['abort']) {\r\n        x.abort();\r\n    }\r\n}\r\n\r\nexport interface iError {\r\n    error?: string;\r\n}\r\n\r\nexport interface iRoutes extends iError {\r\n    routes: { [s: string]: number }\r\n}\r\n\r\nexport interface iGeoFeature {\r\n    type: string;\r\n    geometry: Object;\r\n    properties: Object;\r\n}\r\n\r\nexport interface iSnappedPoint {\r\n    type: string;\r\n    geometry: {\r\n        type: string;\r\n        coordinates: [number, number]\r\n    },\r\n    properties: {\r\n        cumtMilg: number;\r\n        dtLinkCurr: string;\r\n        dtOpnTrfc: string;\r\n        dtTrxHstl: string;\r\n        editIndc: number;\r\n        lcmCkotTxnId: number;\r\n        lcmDtHstl: number;\r\n        lcmDtTxnCurr: string;\r\n        lcmFromToDis: number;\r\n        lcmStus: number;\r\n        lnkOffsetMi: number;\r\n        lnkOffsetPcnt: number;\r\n        rdwyLinkId: number;\r\n        refSiteFromId: number;\r\n        refSiteToId: number;\r\n        routeIds: number[];\r\n        year: number;\r\n    }\r\n}\r\n\r\nexport interface iStnSegment {\r\n    type: string;\r\n    geometry: {\r\n        type: string;\r\n        coordinates: Array<number[]>\r\n    },\r\n    properties: {\r\n        cumtMilgEnd: number;\r\n        cumtMilgStart: number;\r\n        offsetMiEnd: number;\r\n        offsetMiStart: number;\r\n        offsetPcntEnd: number;\r\n        offsetPcntStart: number;\r\n        rdwyLinkIdEnd: number;\r\n        rdwyLinkIdStart: number;\r\n        rdwyLinkIds: number[];\r\n        rdwyRteId: number;\r\n        year: number;\r\n    }\r\n}\r\n\r\nexport interface _iGeoJson{\r\n    type: string;\r\n    crs: {\r\n        type: string;\r\n        properties: {\r\n            name: string;\r\n        }\r\n    };\r\n    features: any[];\r\n}\r\n\r\nexport interface iGeoJsonSnappedPoint extends _iGeoJson{\r\n    features: iSnappedPoint[];\r\n}\r\n\r\nexport interface iGeoJsonStnSegment extends _iGeoJson{\r\n    features: iStnSegment[];\r\n}\r\n\r\n\r\n/**\r\n *\r\n * @param {number} yr\r\n * @param {number} lon\r\n * @param {number} lat\r\n * @param {number} searchDistance\r\n * @param {(d: iRoutes) => any} callback\r\n * @param {(e: iError) => any} error\r\n */\r\nexport function getRoutes(yr: number,\r\n                          lon: number,\r\n                          lat: number,\r\n                          searchDistance: number = 200,\r\n                          callback: (d: iRoutes) => any = (d) => {\r\n                              console.log(d);\r\n                          },\r\n                          error: (e: iError) => any = (e) => {\r\n                              console.log(e);\r\n                          }) {\r\n\r\n    ajx.get(stnApiUrl + '/routes', (d: iRoutes) => {\r\n            if (d.error) {\r\n                error(d)\r\n            } else {\r\n                callback(d)\r\n            }\r\n\r\n        },\r\n        {\r\n            year: yr,\r\n            lon: lon,\r\n            lat: lat,\r\n            distance: searchDistance\r\n        },\r\n        error\r\n    );\r\n}\r\n\r\n/**\r\n *\r\n * @param {number} yr\r\n * @param {number} routeId\r\n * @param {number} lon\r\n * @param {number} lat\r\n * @param {number} searchDistance\r\n * @param {(d) => any} callback\r\n * @param {(e: iError) => any} error\r\n */\r\nexport function getSnappedPoint(yr: number,\r\n                                routeId: number,\r\n                                lon: number,\r\n                                lat: number,\r\n                                searchDistance: number = 200,\r\n                                callback: (d: iGeoJsonSnappedPoint) => any = (d: iGeoJsonSnappedPoint) => {\r\n                                    console.log(d);\r\n                                },\r\n                                error: (e: iError) => any = (e) => {\r\n                                    console.log(e);\r\n                                }) {\r\n\r\n    ajx.get(stnApiUrl + '/snapped', (d: iGeoJsonSnappedPoint) => {\r\n            if (d['error']) {\r\n                error(d)\r\n            } else {\r\n                callback(d)\r\n            }\r\n        },\r\n        {\r\n            year: yr,\r\n            route: routeId,\r\n            lon: lon,\r\n            lat: lat,\r\n            distance: searchDistance\r\n        },\r\n        error\r\n    );\r\n}\r\n\r\n/**\r\n *\r\n * @param {number} yr\r\n * @param {number} routeId\r\n * @param {number} lonStart\r\n * @param {number} latStart\r\n * @param {number} lonEnd\r\n * @param {number} latEnd\r\n * @param {number} searchDistance\r\n * @param {(d) => any} callback\r\n * @param {(e: iError) => any} error\r\n */\r\nexport function getStnSegment(yr: number,\r\n                              routeId: number,\r\n                              lonStart: number,\r\n                              latStart: number,\r\n                              lonEnd: number,\r\n                              latEnd: number,\r\n                              searchDistance: number = 200,\r\n                              callback: (d: iGeoJsonStnSegment) => any = (d: iGeoJsonStnSegment) => {\r\n                                  console.log(d);\r\n                              },\r\n                              error: (e: iError) => any = (e) => {\r\n                                  console.log(e);\r\n                              }) {\r\n\r\n    ajx.get(stnApiUrl + '/segment', (d: iGeoJsonStnSegment) => {\r\n            if (d['error']) {\r\n                error(d)\r\n            } else {\r\n                callback(d)\r\n            }\r\n        },\r\n        {\r\n            year: yr,\r\n            route: routeId,\r\n            lonStart: lonStart,\r\n            latStart: latStart,\r\n            lonEnd: lonEnd,\r\n            latEnd: latEnd,\r\n            distance: searchDistance\r\n        },\r\n        error\r\n    );\r\n}\r\n"]}
\ No newline at end of file
+{"version":3,"file":"stn.js","sourceRoot":"","sources":["../../src/api/stn.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Created by glenn on 6/13/2017.\r\n */\r\n\r\nimport * as ajx from './axios';\r\nimport {apiRoot} from './host';\r\n\r\nexport const stnApiUrl = apiRoot + '/stn';\r\n\r\nfunction _abortHelper(x: XMLHttpRequest) {\r\n    if (x && x['abort']) {\r\n        x.abort();\r\n    }\r\n}\r\n\r\nexport interface iError {\r\n    error?: string;\r\n}\r\n\r\nexport interface iRoutes extends iError {\r\n    routes: { [s: string]: number }\r\n}\r\n\r\nexport interface iGeoFeature {\r\n    type: string;\r\n    geometry: Object;\r\n    properties: Object;\r\n}\r\n\r\nexport interface iSnappedPoint {\r\n    type: string;\r\n    geometry: {\r\n        type: string;\r\n        coordinates: [number, number]\r\n    },\r\n    properties: {\r\n        cumtMilg: number;\r\n        dtLinkCurr: string;\r\n        dtOpnTrfc: string;\r\n        dtTrxHstl: string;\r\n        editIndc: number;\r\n        lcmCkotTxnId: number;\r\n        lcmDtHstl: number;\r\n        lcmDtTxnCurr: string;\r\n        lcmFromToDis: number;\r\n        lcmStus: number;\r\n        lnkOffsetMi: number;\r\n        lnkOffsetPcnt: number;\r\n        rdwyLinkId: number;\r\n        refSiteFromId: number;\r\n        refSiteToId: number;\r\n        routeIds: number[];\r\n        year: number;\r\n    }\r\n}\r\n\r\nexport interface iStnSegment {\r\n    type: string;\r\n    geometry: {\r\n        type: string;\r\n        coordinates: Array<number[]>\r\n    },\r\n    properties: {\r\n        cumtMilgEnd: number;\r\n        cumtMilgStart: number;\r\n        offsetMiEnd: number;\r\n        offsetMiStart: number;\r\n        offsetPcntEnd: number;\r\n        offsetPcntStart: number;\r\n        rdwyLinkIdEnd: number;\r\n        rdwyLinkIdStart: number;\r\n        rdwyLinkIds: number[];\r\n        rdwyRteId: number;\r\n        year: number;\r\n    }\r\n}\r\n\r\nexport interface _iGeoJson {\r\n    type: string;\r\n    crs: {\r\n        type: string;\r\n        properties: {\r\n            name: string;\r\n        }\r\n    };\r\n    features: any[];\r\n}\r\n\r\nexport interface iGeoJsonSnappedPoint extends _iGeoJson {\r\n    features: iSnappedPoint[];\r\n}\r\n\r\nexport interface iGeoJsonStnSegment extends _iGeoJson {\r\n    features: iStnSegment[];\r\n}\r\n\r\n\r\n/**\r\n *\r\n * @param {number} yr\r\n * @param {number} lon\r\n * @param {number} lat\r\n * @param {number} searchDistance\r\n * @param {(d: iRoutes) => any} callback\r\n * @param {(e: iError) => any} error\r\n */\r\nexport function getRoutes(yr: number,\r\n                          lon: number,\r\n                          lat: number,\r\n                          searchDistance: number = 200,\r\n                          callback: (d: iRoutes) => any = (d) => {\r\n                              console.log(d);\r\n                          },\r\n                          error: (e: iError) => any = (e) => {\r\n                              console.log(e);\r\n                          }) {\r\n\r\n    ajx.get(stnApiUrl + '/routes', (d: iRoutes) => {\r\n            if (d.error) {\r\n                error(d)\r\n            } else {\r\n                callback(d)\r\n            }\r\n\r\n        },\r\n        {\r\n            year: yr,\r\n            lon: lon,\r\n            lat: lat,\r\n            distance: searchDistance\r\n        },\r\n        error\r\n    );\r\n}\r\n\r\n/**\r\n *\r\n * @param {number} yr\r\n * @param {number} routeId\r\n * @param {number} lon\r\n * @param {number} lat\r\n * @param {number} searchDistance\r\n * @param {(d) => any} callback\r\n * @param {(e: iError) => any} error\r\n */\r\nexport function getSnappedPoint(yr: number,\r\n                                routeId: number,\r\n                                lon: number,\r\n                                lat: number,\r\n                                searchDistance: number = 200,\r\n                                callback: (d: iGeoJsonSnappedPoint) => any = (d: iGeoJsonSnappedPoint) => {\r\n                                    console.log(d);\r\n                                },\r\n                                error: (e: iError) => any = (e) => {\r\n                                    console.log(e);\r\n                                }) {\r\n\r\n    ajx.get(stnApiUrl + '/snapped', (d: iGeoJsonSnappedPoint) => {\r\n            if (d['error']) {\r\n                error(d)\r\n            } else {\r\n                callback(d)\r\n            }\r\n        },\r\n        {\r\n            year: yr,\r\n            route: routeId,\r\n            lon: lon,\r\n            lat: lat,\r\n            distance: searchDistance\r\n        },\r\n        error\r\n    );\r\n}\r\n\r\n/**\r\n *\r\n * @param {number} yr\r\n * @param {number} routeId\r\n * @param {number} lonStart\r\n * @param {number} latStart\r\n * @param {number} lonEnd\r\n * @param {number} latEnd\r\n * @param {number} searchDistance\r\n * @param {(d) => any} callback\r\n * @param {(e: iError) => any} error\r\n */\r\nexport function getStnSegment(yr: number,\r\n                              routeId: number,\r\n                              lonStart: number,\r\n                              latStart: number,\r\n                              lonEnd: number,\r\n                              latEnd: number,\r\n                              searchDistance: number = 200,\r\n                              callback: (d: iGeoJsonStnSegment) => any = (d: iGeoJsonStnSegment) => {\r\n                                  console.log(d);\r\n                              },\r\n                              error: (e: iError) => any = (e) => {\r\n                                  console.log(e);\r\n                              }) {\r\n\r\n    ajx.get(stnApiUrl + '/segment', (d: iGeoJsonStnSegment) => {\r\n            if (d['error']) {\r\n                error(d)\r\n            } else {\r\n                callback(d)\r\n            }\r\n        },\r\n        {\r\n            year: yr,\r\n            route: routeId,\r\n            lonStart: lonStart,\r\n            latStart: latStart,\r\n            lonEnd: lonEnd,\r\n            latEnd: latEnd,\r\n            distance: searchDistance\r\n        },\r\n        error\r\n    );\r\n}\r\n\r\n\r\nexport function getStnSegmentByMiles(\r\n    yr: number,\r\n    routeId: number,\r\n    startMile: number,\r\n    endMile: number,\r\n    callback: (d: iGeoJsonStnSegment) => any = (d: iGeoJsonStnSegment) => {\r\n        console.log(d);\r\n    },\r\n    error: (e: iError) => any = (e) => {\r\n        console.log(e);\r\n    }) {\r\n\r\n    ajx.get(stnApiUrl + '/segment', (d: iGeoJsonStnSegment) => {\r\n            if (d['error']) {\r\n                error(d)\r\n            } else {\r\n                callback(d)\r\n            }\r\n        },\r\n        {\r\n            year: yr,\r\n            route: routeId,\r\n            startMile: startMile,\r\n            endMile: endMile\r\n        },\r\n        error\r\n    );\r\n}\r\n"]}
\ No newline at end of file
diff --git a/src/api/stn.ts b/src/api/stn.ts
index 66d12594daa1124ab2e915532184e37e3badf3ef..36fc2e0eebb2e53c763ec5e1b4c5807d06f7bfcc 100644
--- a/src/api/stn.ts
+++ b/src/api/stn.ts
@@ -75,7 +75,7 @@ export interface iStnSegment {
     }
 }
 
-export interface _iGeoJson{
+export interface _iGeoJson {
     type: string;
     crs: {
         type: string;
@@ -86,11 +86,11 @@ export interface _iGeoJson{
     features: any[];
 }
 
-export interface iGeoJsonSnappedPoint extends _iGeoJson{
+export interface iGeoJsonSnappedPoint extends _iGeoJson {
     features: iSnappedPoint[];
 }
 
-export interface iGeoJsonStnSegment extends _iGeoJson{
+export interface iGeoJsonStnSegment extends _iGeoJson {
     features: iStnSegment[];
 }
 
@@ -218,3 +218,33 @@ export function getStnSegment(yr: number,
         error
     );
 }
+
+
+export function getStnSegmentByMiles(
+    yr: number,
+    routeId: number,
+    startMile: number,
+    endMile: number,
+    callback: (d: iGeoJsonStnSegment) => any = (d: iGeoJsonStnSegment) => {
+        console.log(d);
+    },
+    error: (e: iError) => any = (e) => {
+        console.log(e);
+    }) {
+
+    ajx.get(stnApiUrl + '/segment', (d: iGeoJsonStnSegment) => {
+            if (d['error']) {
+                error(d)
+            } else {
+                callback(d)
+            }
+        },
+        {
+            year: yr,
+            route: routeId,
+            startMile: startMile,
+            endMile: endMile
+        },
+        error
+    );
+}