Skip to content

Instantly share code, notes, and snippets.

@ggodreau
Last active July 28, 2017 20:45
Show Gist options
  • Save ggodreau/f3c5bf997411cc79588da0f4b7233cf9 to your computer and use it in GitHub Desktop.
Save ggodreau/f3c5bf997411cc79588da0f4b7233cf9 to your computer and use it in GitHub Desktop.
c4t2_bd.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Universitat Jaume I - Indoor Wi-Fi Location Project\n",
"The purpose of this project is to create a model that will determine location using a cel phone and wireless access points (WAP) in 3 buildings at the Universitat Jaume I in Castellón de la Plana, Spain. \n",
"To create a training data set, University students measured the strength of signal for any WAP that was picked up by the cel phone. The Longitude, Latitude, Building and Floor were recorded for each measurement, along with room name, relative position to the room, student who recorded the data, the cellphone type used and the time the measurement was taken. "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# loading modules\n",
"import matplotlib as mpl\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.gridspec as gsp\n",
"\n",
"from numpy import ones,vstack\n",
"from numpy.linalg import lstsq\n",
"\n",
"%matplotlib inline\n",
"\n",
"import pandas as pd\n",
"import numpy as np\n",
"import random\n",
"from datetime import datetime\n",
"import re\n",
"from sklearn.metrics import r2_score\n",
"from sklearn.metrics import explained_variance_score\n",
"import wifi_utils as wf\n",
"\n",
"from sklearn.metrics import confusion_matrix, classification_report, accuracy_score\n",
"\n",
"from sklearn.neighbors import KNeighborsClassifier\n",
"\n",
"from sklearn.naive_bayes import GaussianNB\n",
"\n",
"from sklearn import linear_model\n",
"\n",
"from sklearn.svm import SVC\n",
"from sklearn.gaussian_process import GaussianProcessClassifier\n",
"from sklearn.gaussian_process.kernels import RBF\n",
"from sklearn.tree import DecisionTreeClassifier\n",
"from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier\n",
"from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis\n",
"from sklearn.neural_network import MLPClassifier\n",
"\n",
"from sklearn.linear_model import SGDRegressor"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"## Get data and load to dataframes\n",
"trainfile = \"data/trainingData.csv\"\n",
"testfile = \"data/validationData.csv\"\n",
"\n",
"df = pd.read_csv(trainfile)\n",
"testdf = pd.read_csv(testfile)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"520\n"
]
}
],
"source": [
"# Get List of WAP Columns\n",
"WAPcols = []\n",
"n=0\n",
"for i in df.columns:\n",
" if re.match('WAP', i) is not None:\n",
" n+=1\n",
" WAPcols.append(i)\n",
" \n",
"print n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Data Preparation\n",
"\n",
"The WAP measurements are either 100, which is an artificial value signifying no signal, or a value in decibels from -65 db to -100db, where -65 is the stronger signal. \n",
"\n",
"Since decibels is a logarithmic measurement, this has been transformed to linear make the predictions more accurate. So the data preparation algorithm is as follows:\n",
"\n",
"If WAP measurement = 100, then transform to zero\n",
"\n",
"If WAP measurement != 100, then transform to linear as follows:\n",
"\n",
"\n",
"\\begin{equation*}\n",
"{\\frac{10^{\\frac{float(<RSSI Value>)}{10}}} {1000} } {10^{12}}\n",
"\\end{equation*}"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"## Assign 0 to all values where x= 100\n",
"for i in WAPcols:\n",
" df[i] = df[i].apply(lambda x: 0 if x ==100 else 10**(float(x)/10)/1000*10**12)\n",
" testdf[i] = testdf[i].apply(lambda x: 0 if x ==100 else 10**(float(x)/10)/1000*10**12)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0. , 0.39810717, 0.50118723, 0.63095734, 3.16227766])"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"testdf['WAP001'].unique()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Also, remove any rows where there is no signal."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training Data\n",
"Number of rows before removal is 19937 \n",
"Number of rows after removal is 19861 \n",
"Testing Data\n",
"Number of rows before removal is 1111 \n",
"Number of rows after removal is 1111 \n"
]
}
],
"source": [
"## Remove rows where there is no signal\n",
"print \"Training Data\"\n",
"print \"Number of rows before removal is %s \" % len(df[WAPcols])\n",
"df = df[df[WAPcols].sum(axis=1)!=0]\n",
"print \"Number of rows after removal is %s \" % len(df[WAPcols])\n",
"\n",
"print \"Testing Data\"\n",
"print \"Number of rows before removal is %s \" % len(testdf[WAPcols])\n",
"testdf = testdf[testdf[WAPcols].sum(axis=1)!=0]\n",
"print \"Number of rows after removal is %s \" % len(testdf[WAPcols])"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1 2 0]\n",
"[2 3 4 0 1]\n"
]
}
],
"source": [
"## Inspect the unique values for Building ID and Floor\n",
"print df.BUILDINGID.unique()\n",
"print df.FLOOR.unique()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## To get a better understanding of the data, this scatterplot shows the distribution of the points where measurements were taken. "
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<seaborn.axisgrid.FacetGrid at 0x4b5dd30>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0xb7d59e8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"## Show scatterplot by floor\n",
"#g = sns.FacetGrid(df, hue=\"BLDG_COLOR\",size=10)\n",
"g = sns.FacetGrid(df, hue=\"BUILDINGID\",size=10)\n",
"g.map(plt.scatter, \"LONGITUDE\", \"LATITUDE\", alpha=.7, label='BUILDINGID').add_legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Show counts by building"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[5248, 5159, 9454]\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x133581d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\n",
" \n",
"buildings = ('0','1','2')\n",
"y_pos = np.arange(len(buildings))\n",
"bld_counts=[]\n",
"\n",
"for i in range(3):\n",
" bld_counts.append(df['BUILDINGID'].value_counts()[i])\n",
" \n",
"print bld_counts\n",
" \n",
"plt.bar(y_pos, bld_counts, align='center', alpha=0.5)\n",
"plt.xticks(y_pos, buildings)\n",
"plt.ylabel('Counts')\n",
"plt.title('Counts by Building')\n",
" \n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## To get a better picture of the data, inspect the readings by floor."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<seaborn.axisgrid.FacetGrid at 0x133587b8>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n+Pa4AAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x13358160>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"## Show scatterplot by floor\n",
"g = sns.FacetGrid(df, col=\"FLOOR\", hue=\"BUILDINGID\",size=4,col_wrap=3)\n",
"g.map(plt.scatter, \"LONGITUDE\", \"LATITUDE\", alpha=.7).add_legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Benchmark Measurements\n",
"\n",
"\n",
"Benchmark models are created for this project using ordinary least squares regression for Latitude and Longitude prediction, and Gaussian Naïve Bayes (GNB) classification to predict Building and Floor. The least ordinary squares regression was performed using sklearn.linear_model.LinearRegression, and GNB was performed using sklearn.naive_bayes.GaussianNB. The models were trained against the training data, and performance was measured against the validation data.\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"R-squared score for Latitude is -87.7143049479 \n",
"R-squared score for Longitude is -131.711115802 \n"
]
}
],
"source": [
"## Predict Latitude and Longitude with an ordinary least squares regression model\n",
"reg = linear_model.LinearRegression()\n",
"reg.fit(df[WAPcols], df['LATITUDE'])\n",
"y_pred = reg.predict(testdf[WAPcols])\n",
"r2= r2_score(testdf['LATITUDE'], y_pred, multioutput='variance_weighted') \n",
"\n",
"print \"R-squared score for Latitude is %s \" % r2\n",
"\n",
"reg.fit(df[WAPcols], df['LONGITUDE'])\n",
"y_pred = reg.predict(testdf[WAPcols])\n",
"r2= r2_score(testdf['LONGITUDE'], y_pred, multioutput='variance_weighted') \n",
"\n",
"print \"R-squared score for Longitude is %s \" % r2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"These results for Longitude and Latitude using Linear Regression are not very good. Next, check how good a basic Naive Bayes classifier predicts building ID and floor."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.5868586858685868"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Run with GaussianNB to predict building\n",
"gnb = GaussianNB()\n",
"gnb.fit(df[WAPcols], df['BUILDINGID'])\n",
"y_pred = gnb.predict(testdf[WAPcols])\n",
"accuracy_score(testdf['BUILDINGID'], y_pred)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The Building ID prediction is good. However, it would be valuable to more accurately predict Longitude and Latitude in order to give a user a more accurate prediction of where they are within a building. \n",
"Later below, a Stochastic Gradient Descent regressor will be applied to try to improve on the Logitude and Latitude values."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"0.6183618361836184"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## Predict Floor\n",
"gnb = GaussianNB()\n",
"gnb.fit(df[WAPcols], df['FLOOR'])\n",
"y_pred = gnb.predict(testdf[WAPcols])\n",
"accuracy_score(testdf['FLOOR'], y_pred)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The Floor Prediction using Naive Bayes is only about 38%. Therefore, we will explore classifiers which can improve upon this measure."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Predict Longitude and Latitude with Stochastic Gradient Descent\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"SGDRegressor(alpha=0.0001, average=False, epsilon=0.1, eta0=0.01,\n",
" fit_intercept=True, l1_ratio=0.15, learning_rate='invscaling',\n",
" loss='squared_loss', n_iter=5, penalty='l2', power_t=0.25,\n",
" random_state=None, shuffle=True, verbose=0, warm_start=False)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sgd = linear_model.SGDRegressor()\n",
"sgd"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"R-squared score for Latitude is -1.08030582391e+39 \n",
"R-squared score for Longitude is -2.49005120347e+38 \n"
]
}
],
"source": [
"## Get X, y and fit the model\n",
"sgd.fit(df[WAPcols], df['LATITUDE'])\n",
"y_pred = sgd.predict(testdf[WAPcols])\n",
"r2= r2_score(testdf['LATITUDE'], y_pred, multioutput='variance_weighted') \n",
"\n",
"print \"R-squared score for Latitude is %s \" % r2\n",
"\n",
"sgd.fit(df[WAPcols], df['LONGITUDE'])\n",
"y_pred = sgd.predict(testdf[WAPcols])\n",
"r2= r2_score(testdf['LONGITUDE'], y_pred, multioutput='variance_weighted') \n",
"\n",
"print \"R-squared score for Longitude is %s \" % r2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"These results show that SGD Regression makes for a very poor model for predicting Longitude and Latitude. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### My approach was to create 3 models to predict longitude, latitude and floor. The other attributes (such as building, room, and relative position) can all be derived from these three features. \n",
"\n",
"\n",
"For each WAP, I calculated the weighted average of the locations that picked these up. This formula describes my approach, and is performed for each WAP from WAP001 through WAP520.\n",
"\n",
"$$w = WAP Signal Strength$$\n",
"\n",
"$${\\sum\\limits_{n=1}^{trainsize} ({w*LONGITUDE})\\over\\sum\\limits_{n=1}^{trainsize} {w}} = Effective WAP Longitude $$\n",
"\n",
"$${\\sum\\limits_{n=1}^{trainsize} ({w*LATITUDE})\\over\\sum\\limits_{n=1}^{trainsize} {w}} = Effective WAP Latitude $$\n",
"\n",
"$${\\sum\\limits_{n=1}^{trainsize} ({w*FLOOR})\\over\\sum\\limits_{n=1}^{trainsize} {w}} = Effective WAP Floor $$\n",
"\n",
"\n",
"This was then written to a dataframe, and saved to a csv file \"WAPcoords.csv\". This was performed separately in a different Jupyter notebook. The operation had to be broken down into two parts because the operation was running out of memory. Once the effective coordinates for each WAP was captured, it was relatively easy to run the predictions.\n",
"\n",
"In addition, the total sum of the weights (${\\sum\\limits_{n=1}^{trainsize} ({w})} = Weights $) was captured for informational purposes:\n",
"\n",
"\n",
"NOTE: Not all WAP's were picked up in any of the readings. Only those that were picked up are included in the \"WAPcoordsLinear.csv\" file.\n"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"## Get Data from WAP coords file\n",
"WAPfile = \"data/WAPcoordsLinear.csv\"\n",
"\n",
"WAPdf = pd.read_csv(WAPfile)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Index([u'WAP', u'LONGITUDE', u'LATITUDE', u'FLOOR', u'weights'], dtype='object')"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## Show the columns in a dataframe\n",
"WAPdf.columns"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"55"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## Get list of WAP's with readings\n",
"cols_w_readings = WAPdf['WAP']\n",
"\n",
"## Show the count of WAP's that are not picked up by any cel phone\n",
"len(list(set(WAPcols) - set(cols_w_readings)))"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>WAP</th>\n",
" <th>LONGITUDE</th>\n",
" <th>LATITUDE</th>\n",
" <th>FLOOR</th>\n",
" <th>weights</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>WAP001</td>\n",
" <td>-7613.913071</td>\n",
" <td>4.864995e+06</td>\n",
" <td>2.779066</td>\n",
" <td>5.450861</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>WAP002</td>\n",
" <td>-7676.714152</td>\n",
" <td>4.864923e+06</td>\n",
" <td>2.736216</td>\n",
" <td>34.118864</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>WAP005</td>\n",
" <td>-7313.692135</td>\n",
" <td>4.864800e+06</td>\n",
" <td>2.782350</td>\n",
" <td>25.080158</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>WAP006</td>\n",
" <td>-7430.533758</td>\n",
" <td>4.864865e+06</td>\n",
" <td>0.008827</td>\n",
" <td>15299.876300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>WAP007</td>\n",
" <td>-7640.773646</td>\n",
" <td>4.864915e+06</td>\n",
" <td>0.013236</td>\n",
" <td>213366.521593</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" WAP LONGITUDE LATITUDE FLOOR weights\n",
"0 WAP001 -7613.913071 4.864995e+06 2.779066 5.450861\n",
"1 WAP002 -7676.714152 4.864923e+06 2.736216 34.118864\n",
"2 WAP005 -7313.692135 4.864800e+06 2.782350 25.080158\n",
"3 WAP006 -7430.533758 4.864865e+06 0.008827 15299.876300\n",
"4 WAP007 -7640.773646 4.864915e+06 0.013236 213366.521593"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"WAPdf.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, run the predictions.\n",
"\n",
"For each row in the validation set, multiply the WAP radio signal (w) by the effective Longitude, Latitude and Floor of the WAP device.\n",
"\n",
"$${\\sum\\limits_{x=WAP001}^{WAP520} ({w*effLONGITUDE})\\over\\sum\\limits_{x=WAP001}^{WAP520} {w}} = yLONGITUDE $$\n",
"\n",
"$${\\sum\\limits_{x=WAP001}^{WAP520} ({w*effLATITUDE})\\over\\sum\\limits_{x=WAP001}^{WAP520} {w}} = yLATITUDE $$\n",
"\n",
"$${\\sum\\limits_{x=WAP001}^{WAP520} ({w*effFLOOR})\\over\\sum\\limits_{x=WAP001}^{WAP520} {w}} = yFLOOR $$"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2017-07-28 12:58:15.832000\n",
"2017-07-28 13:11:01.111000\n"
]
}
],
"source": [
"## Get predictions from test set\n",
"print datetime.now()\n",
"yLong,yLat,yFloor = wf.get_pred(testdf,WAPdf,cols_w_readings)\n",
"print datetime.now()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"R-squared score for Longitude is 0.99131 \n",
"R-squared score for Latitude is 0.96421 \n",
"R-squared score for Floor is 0.75218 \n",
"Explained Variance score for Longitude is 0.99134 \n",
"Explained Variance score for Latitude is 0.96425 \n",
"Explained score for Floor is 0.76443 \n"
]
}
],
"source": [
"#Get the R-squared and Explained Variance for the predictions\n",
"wf.show_score(testdf,yLong,yLat,yFloor)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"As shown above, this model creates a very high prediction for the Longitude, Latitude and Floor. The .991 R-squared for Longitude and .964 R-squared for Latitude show a very strong correlation. The R-squared for Floor is much lower, at about .75, so this needs more refinement. It would probably be best to treat Floor as a categorization problem, instead of a regression problem. \n",
"\n",
"The next relevant thing to check is how far the Longitude and Latitude are off in terms of actual distance.\n"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\Brian\\Miniconda2\\lib\\site-packages\\ipykernel\\__main__.py:2: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" from ipykernel import kernelapp as app\n",
"C:\\Users\\Brian\\Miniconda2\\lib\\site-packages\\ipykernel\\__main__.py:3: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" app.launch_new_instance()\n",
"C:\\Users\\Brian\\Miniconda2\\lib\\site-packages\\ipykernel\\__main__.py:4: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
"C:\\Users\\Brian\\Miniconda2\\lib\\site-packages\\ipykernel\\__main__.py:5: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>LONGITUDE</th>\n",
" <th>LATITUDE</th>\n",
" <th>FLOOR</th>\n",
" <th>yLONG</th>\n",
" <th>yLAT</th>\n",
" <th>yFLOOR</th>\n",
" <th>LONGdelta</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>-7515.916799</td>\n",
" <td>4.864890e+06</td>\n",
" <td>1</td>\n",
" <td>-7484.139857</td>\n",
" <td>4.864889e+06</td>\n",
" <td>0.893345</td>\n",
" <td>31.776943</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-7383.867221</td>\n",
" <td>4.864840e+06</td>\n",
" <td>4</td>\n",
" <td>-7329.148363</td>\n",
" <td>4.864811e+06</td>\n",
" <td>3.837592</td>\n",
" <td>54.718858</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>-7374.302080</td>\n",
" <td>4.864847e+06</td>\n",
" <td>4</td>\n",
" <td>-7327.811924</td>\n",
" <td>4.864812e+06</td>\n",
" <td>3.845482</td>\n",
" <td>46.490156</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>-7365.824883</td>\n",
" <td>4.864843e+06</td>\n",
" <td>4</td>\n",
" <td>-7332.369440</td>\n",
" <td>4.864811e+06</td>\n",
" <td>3.801760</td>\n",
" <td>33.455442</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>-7641.499303</td>\n",
" <td>4.864922e+06</td>\n",
" <td>2</td>\n",
" <td>-7640.975171</td>\n",
" <td>4.864913e+06</td>\n",
" <td>1.814536</td>\n",
" <td>0.524132</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" LONGITUDE LATITUDE FLOOR yLONG yLAT yFLOOR \\\n",
"0 -7515.916799 4.864890e+06 1 -7484.139857 4.864889e+06 0.893345 \n",
"1 -7383.867221 4.864840e+06 4 -7329.148363 4.864811e+06 3.837592 \n",
"2 -7374.302080 4.864847e+06 4 -7327.811924 4.864812e+06 3.845482 \n",
"3 -7365.824883 4.864843e+06 4 -7332.369440 4.864811e+06 3.801760 \n",
"4 -7641.499303 4.864922e+06 2 -7640.975171 4.864913e+06 1.814536 \n",
"\n",
" LONGdelta \n",
"0 31.776943 \n",
"1 54.718858 \n",
"2 46.490156 \n",
"3 33.455442 \n",
"4 0.524132 "
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rsltdf = testdf[['LONGITUDE','LATITUDE','FLOOR']]\n",
"rsltdf['yLONG']=yLong\n",
"rsltdf['yLAT']=yLat\n",
"rsltdf['yFLOOR']=yFloor\n",
"rsltdf['LONGdelta']=(rsltdf['yLONG']-rsltdf['LONGITUDE'])\n",
"rsltdf.head()"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"count 1111.000000\n",
"mean 0.735945\n",
"std 11.184222\n",
"min -47.954204\n",
"5% -14.594349\n",
"10% -11.075737\n",
"25% -4.756774\n",
"50% 0.106037\n",
"75% 5.379403\n",
"90% 11.474567\n",
"95% 17.301607\n",
"max 61.380856\n",
"Name: LONGdelta, dtype: float64"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1155b908>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"##See distribution of errors for Longitude\n",
"plt.hist(rsltdf['LONGdelta'], bins=range(-60, 60,2))\n",
"rsltdf['LONGdelta'].describe(percentiles=[.05,.1,.25,.5,.75,.9,.95])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This shows that 90% of the values longitude readings are accurate within 17 meters."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\Brian\\Miniconda2\\lib\\site-packages\\ipykernel\\__main__.py:2: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" from ipykernel import kernelapp as app\n"
]
},
{
"data": {
"text/plain": [
"count 1111.000000\n",
"mean 0.469615\n",
"std 13.286742\n",
"min -62.943987\n",
"5% -18.259731\n",
"10% -12.078923\n",
"25% -4.755110\n",
"50% -0.106392\n",
"75% 4.471628\n",
"90% 13.283699\n",
"95% 21.563314\n",
"max 58.748235\n",
"Name: LATdelta, dtype: float64"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nfx1HpzX/199+AAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x140bbac8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"##See distribution of errors for Latitude\n",
"rsltdf['LATdelta']=(rsltdf['yLAT']-rsltdf['LATITUDE'])\n",
"plt.hist(rsltdf['LATdelta'], bins=range(-60, 60,2))\n",
"rsltdf['LATdelta'].describe(percentiles=[.05,.1,.25,.5,.75,.9,.95])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This shows that 90% of the values latitude readings are accurate within 21 meters."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Use longitude and latitude to predict the Building"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{-2: {'a': 0.54433353173515298, 'c': -2655726.4680477306, 'b': -1.0, 'desc': 'Line Between Buildings 1 and 0'}, -1: {'a': 0.59752034217717875, 'c': -2914252.8305933354, 'b': -1.0, 'desc': 'Line Between Buildings 2 and 1'}}\n"
]
}
],
"source": [
"## Get file of Polygon Shapes. This was created by inspecting the shapes of the buildings in Tableau, \n",
"## and choosing the corners of the buildings. This next part captures the slope and intercept of the \n",
"## the lines separating the building, which can then be used to classify the points. \n",
"\n",
"pgfile = \"data/BuildingPolygonShapes.csv\"\n",
"\n",
"pgdf = pd.read_csv(pgfile)\n",
"pgdf.columns\n",
"\n",
"bounds={}\n",
"for i in [-1,-2]:\n",
" line={}\n",
" points= np.asarray(pgdf[pgdf['BLDG']==i][['Latitude','Longitude']])\n",
" x_coords, y_coords = zip(*points)\n",
" A = vstack([x_coords,ones(len(x_coords))]).T\n",
" a, c = lstsq(A, y_coords)[0]\n",
" line['a']=a\n",
" line['b']=-1.0\n",
" line['c']=c\n",
" if i==-1:\n",
" line['desc']=\"Line Between Buildings 2 and 1\"\n",
" else:\n",
" line['desc']=\"Line Between Buildings 1 and 0\"\n",
" bounds[i]=line\n",
" \n",
"print bounds"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"X Y is :\n",
"4864888.51027 -7484.13985682\n",
"Distance to Line01, Distance to Line21:\n",
"-105.734279235 86.8358975421\n",
"X Y is :\n",
"4864811.36795 -7329.14836271\n",
"Distance to Line01, Distance to Line21:\n",
"-278.745939695 -85.7821327621\n",
"X Y is :\n",
"4864811.60569 -7327.81192369\n",
"Distance to Line01, Distance to Line21:\n",
"-279.806086134 -86.8074307828\n",
"X Y is :\n",
"4864810.91057 -7332.36944013\n",
"Distance to Line01, Distance to Line21:\n",
"-276.135510021 -83.2516671786\n",
"X Y is :\n",
"4864912.90596 -7640.97517093\n",
"Distance to Line01, Distance to Line21:\n",
"43.6790247845 233.981404745\n",
"X Y is :\n",
"4864809.94217 -7355.80312378\n",
"Distance to Line01, Distance to Line21:\n",
"-256.016475884 -63.6321966597\n",
"X Y is :\n",
"4864822.63501 -7383.68099578\n",
"Distance to Line01, Distance to Line21:\n",
"-225.462724464 -33.1904414375\n",
"X Y is :\n",
"4864802.34511 -7324.79239363\n",
"Distance to Line01, Distance to Line21:\n",
"-286.885585941 -94.1495139215\n",
"X Y is :\n",
"4864800.60796 -7346.9616798\n",
"Distance to Line01, Distance to Line21:\n",
"-268.244618251 -76.0097561337\n",
"X Y is :\n",
"4864831.39569 -7348.17569348\n",
"Distance to Line01, Distance to Line21:\n",
"-252.458937955 -59.1756683535\n",
"X Y is :\n",
"4864810.19849 -7346.62676634\n",
"Distance to Line01, Distance to Line21:\n",
"-263.953608676 -71.3779872764\n",
"X Y is :\n",
"4864843.264 -7373.47286145\n",
"Distance to Line01, Distance to Line21:\n",
"-224.566044758 -31.3721945219\n",
"X Y is :\n",
"4864844.21504 -7373.16592508\n",
"Distance to Line01, Distance to Line21:\n",
"-224.380942656 -31.1478598443\n",
"X Y is :\n",
"4864787.67793 -7343.50210967\n",
"Distance to Line01, Distance to Line21:\n",
"-277.464949983 -85.6117552004\n",
"X Y is :\n",
"4864842.959 -7374.41308968\n",
"Distance to Line01, Distance to Line21:\n",
"-223.886050575 -30.7215157794\n",
"X Y is :\n",
"4864839.12129 -7369.74045304\n",
"Distance to Line01, Distance to Line21:\n",
"-229.824855994 -36.7011289782\n",
"X Y is :\n",
"4864884.18979 -7560.05555487\n",
"Distance to Line01, Distance to Line21:\n",
"-41.1224185047 149.788152606\n",
"X Y is :\n",
"4864828.42671 -7379.78079074\n",
"Distance to Line01, Distance to Line21:\n",
"-226.119337673 -33.5677608975\n",
"X Y is :\n",
"4864787.84079 -7399.74081961\n",
"Distance to Line01, Distance to Line21:\n",
"-227.992111959 -37.2511881015\n",
"X Y is :\n",
"4864840.84511 -7374.88548629\n",
"Distance to Line01, Distance to Line21:\n",
"-224.481776254 -31.4002727784\n",
"X Y is :\n",
"4864879.69799 -7565.96218176\n",
"Distance to Line01, Distance to Line21:\n",
"-38.0820724317 152.554604342\n",
"X Y is :\n",
"4864979.37984 -7606.75398788\n",
"Distance to Line01, Distance to Line21:\n",
"45.4029510025 238.701323966\n",
"X Y is :\n",
"4864831.12965 -7380.88212807\n",
"Distance to Line01, Distance to Line21:\n",
"-223.859768268 -31.2359233688\n",
"X Y is :\n",
"4864818.34438 -7368.56416991\n",
"Distance to Line01, Distance to Line21:\n",
"-240.791293864 -48.3679813071\n",
"X Y is :\n",
"4864869.66364 -7562.79303568\n",
"Distance to Line01, Distance to Line21:\n",
"-45.662915991 144.687196034\n",
"X Y is :\n",
"4864870.19564 -7562.5318363\n",
"Distance to Line01, Distance to Line21:\n",
"-45.6379865408 144.735850667\n",
"X Y is :\n",
"4864843.57242 -7378.91139338\n",
"Distance to Line01, Distance to Line21:\n",
"-219.641879204 -26.5453948619\n",
"X Y is :\n",
"4864831.94328 -7392.18695544\n",
"Distance to Line01, Distance to Line21:\n",
"-213.541644062 -21.1141787383\n",
"X Y is :\n",
"4864934.03185 -7674.77805238\n",
"Distance to Line01, Distance to Line21:\n",
"83.4685451452 273.834926883\n",
"X Y is :\n",
"4864925.04553 -7650.07645545\n",
"Distance to Line01, Distance to Line21:\n",
"57.4766103125 248.020971344\n",
"X Y is :\n",
"4865004.15391 -7639.50461474\n",
"Distance to Line01, Distance to Line21:\n",
"86.0124389945 279.522821492\n",
"X Y is :\n",
"4864922.49207 -7536.27352611\n",
"Distance to Line01, Distance to Line21:\n",
"-43.6983362198 149.019309227\n",
"X Y is :\n",
"4864933.65934 -7533.66140826\n",
"Distance to Line01, Distance to Line21:\n",
"-40.6535859588 152.505014719\n",
"X Y is :\n",
"4864935.15377 -7533.33214791\n",
"Distance to Line01, Distance to Line21:\n",
"-40.2283010158 152.988905817\n",
"X Y is :\n",
"4864933.78798 -7533.62191884\n",
"Distance to Line01, Distance to Line21:\n",
"-40.6267694617 152.537097484\n",
"X Y is :\n",
"4864866.16145 -7432.34131334\n",
"Distance to Line01, Distance to Line21:\n",
"-161.914230373 30.9070696049\n",
"X Y is :\n",
"4864826.31907 -7457.39350861\n",
"Distance to Line01, Distance to Line21:\n",
"-158.959024425 31.9763003024\n",
"X Y is :\n",
"4864812.36083 -7460.10271369\n",
"Distance to Line01, Distance to Line21:\n",
"-163.25284641 27.1423651195\n",
"X Y is :\n",
"4864811.96719 -7461.04205705\n",
"Distance to Line01, Distance to Line21:\n",
"-162.616006023 27.7468198521\n",
"X Y is :\n",
"4864812.52643 -7461.01361575\n",
"Distance to Line01, Distance to Line21:\n",
"-162.373617664 28.0092555998\n",
"X Y is :\n",
"4864882.45942 -7415.98008463\n",
"Distance to Line01, Distance to Line21:\n",
"-168.492502052 25.2218015983\n",
"X Y is :\n",
"4864888.00751 -7416.8087261\n",
"Distance to Line01, Distance to Line21:\n",
"-165.112192364 28.7789159728\n",
"X Y is :\n",
"4864921.92048 -7538.4083783\n",
"Distance to Line01, Distance to Line21:\n",
"-42.096547194 150.558748353\n",
"X Y is :\n",
"4864922.1201 -7538.307888\n",
"Distance to Line01, Distance to Line21:\n",
"-42.0893725131 150.574874669\n",
"X Y is :\n",
"4864922.05735 -7538.3973698\n",
"Distance to Line01, Distance to Line21:\n",
"-42.0407811536 150.61950119\n",
"X Y is :\n",
"4864937.63893 -7531.66378231\n",
"Distance to Line01, Distance to Line21:\n",
"-40.5055083479 152.831437436\n",
"X Y is :\n",
"4864884.45111 -7559.53290193\n",
"Distance to Line01, Distance to Line21:\n",
"-41.4565355449 149.473528552\n",
"X Y is :\n",
"4864815.1657 -7389.69261643\n",
"Distance to Line01, Distance to Line21:\n",
"-223.753691348 -31.861116373\n",
"X Y is :\n",
"4864764.14415 -7340.35937516\n",
"Distance to Line01, Distance to Line21:\n",
"-291.476576589 -100.380745774\n",
"X Y is :\n",
"4864763.4354 -7339.63762169\n",
"Distance to Line01, Distance to Line21:\n",
"-292.449348373 -101.363860636\n",
"X Y is :\n",
"4864934.12398 -7675.35024477\n",
"Distance to Line01, Distance to Line21:\n",
"84.0151549963 274.373371967\n",
"X Y is :\n",
"4864948.18064 -7644.64145771\n",
"Distance to Line01, Distance to Line21:\n",
"63.7637408354 255.222090926\n",
"X Y is :\n",
"4864911.38385 -7639.15842864\n",
"Distance to Line01, Distance to Line21:\n",
"41.3556516808 231.641120594\n",
"X Y is :\n",
"4864959.73203 -7633.83154706\n",
"Distance to Line01, Distance to Line21:\n",
"59.7919338342 251.86758048\n",
"X Y is :\n",
"4864979.47647 -7606.89064267\n",
"Distance to Line01, Distance to Line21:\n",
"45.5691720551 238.868194617\n",
"X Y is :\n",
"4864979.41043 -7606.78801778\n",
"Distance to Line01, Distance to Line21:\n",
"45.4474633065 238.746225359\n",
"X Y is :\n",
"4864980.38706 -7608.17522126\n",
"Distance to Line01, Distance to Line21:\n",
"47.1327768906 240.437985821\n",
"X Y is :\n",
"4864979.76309 -7607.27932487\n",
"Distance to Line01, Distance to Line21:\n",
"46.0475879302 239.348869044\n",
"X Y is :\n",
"4864981.33412 -7610.6264789\n",
"Distance to Line01, Distance to Line21:\n",
"49.7385209209 243.027994685\n",
"X Y is :\n",
"4864978.49262 -7603.30993892\n",
"Distance to Line01, Distance to Line21:\n",
"41.9538366789 235.289764572\n",
"X Y is :\n",
"4864981.00548 -7615.67956055\n",
"Distance to Line01, Distance to Line21:\n",
"54.019569814 247.197146997\n",
"X Y is :\n",
"4864932.73516 -7679.19045444\n",
"Distance to Line01, Distance to Line21:\n",
"86.7240601 276.957557374\n",
"X Y is :\n",
"4864934.15101 -7675.32241741\n",
"Distance to Line01, Distance to Line21:\n",
"84.0036365583 274.363348311\n",
"X Y is :\n",
"4864934.08874 -7675.57055026\n",
"Distance to Line01, Distance to Line21:\n",
"84.1918014878 274.544411326\n",
"X Y is :\n",
"4864934.14669 -7675.37105416\n",
"Distance to Line01, Distance to Line21:\n",
"84.0442909478 274.402885497\n",
"X Y is :\n",
"4864934.15718 -7675.3244807\n",
"Distance to Line01, Distance to Line21:\n",
"84.0083986767 274.368284361\n",
"X Y is :\n",
"4864934.15416 -7675.32901757\n",
"Distance to Line01, Distance to Line21:\n",
"84.0109412798 274.370631692\n",
"X Y is :\n",
"4864948.89218 -7644.18318808\n",
"Distance to Line01, Distance to Line21:\n",
"63.701420197 255.19366763\n",
"X Y is :\n",
"4864931.48114 -7669.0918263\n",
"Distance to Line01, Distance to Line21:\n",
"77.2548077479 267.645365647\n",
"X Y is :\n",
"4864934.04783 -7674.8316088\n",
"Distance to Line01, Distance to Line21:\n",
"83.5232240453 273.889097839\n",
"X Y is :\n",
"4864932.69274 -7670.5788018\n",
"Distance to Line01, Distance to Line21:\n",
"79.1400851463 269.543291838\n",
"X Y is :\n",
"4864934.11626 -7675.21482935\n",
"Distance to Line01, Distance to Line21:\n",
"83.8925298266 274.25316989\n",
"X Y is :\n",
"4864918.27714 -7646.25711808\n",
"Distance to Line01, Distance to Line21:\n",
"50.8861321553 241.270628405\n",
"X Y is :\n",
"4864921.00469 -7648.117111\n",
"Distance to Line01, Distance to Line21:\n",
"53.8238004006 244.266341037\n",
"X Y is :\n",
"4864918.91929 -7645.37054711\n",
"Distance to Line01, Distance to Line21:\n",
"50.4144548702 240.838945108\n",
"X Y is :\n",
"4864920.01357 -7650.7758656\n",
"Distance to Line01, Distance to Line21:\n",
"55.6851631364 246.040324428\n",
"X Y is :\n",
"4864911.33221 -7639.07112296\n",
"Distance to Line01, Distance to Line21:\n",
"41.2542823005 231.539687816\n",
"X Y is :\n",
"4864911.33221 -7639.07112296\n",
"Distance to Line01, Distance to Line21:\n",
"41.2542823005 231.539687816\n",
"X Y is :\n",
"4864911.29732 -7639.06564448\n",
"Distance to Line01, Distance to Line21:\n",
"41.2327890199 231.517087931\n",
"X Y is :\n",
"4864928.0151 -7650.90047759\n",
"Distance to Line01, Distance to Line21:\n",
"59.6200858899 250.251516208\n",
"X Y is :\n",
"4864981.4458 -7612.12839821\n",
"Distance to Line01, Distance to Line21:\n",
"51.1110656202 244.374574074\n",
"X Y is :\n",
"4864982.77625 -7614.69309323\n",
"Distance to Line01, Distance to Line21:\n",
"53.9997401614 247.258614582\n",
"X Y is :\n",
"4864979.40425 -7606.82636178\n",
"Distance to Line01, Distance to Line21:\n",
"45.4781860813 238.775970584\n",
"X Y is :\n",
"4864984.58379 -7625.23264376\n",
"Distance to Line01, Distance to Line21:\n",
"64.1208941631 257.233225922\n",
"X Y is :\n",
"4864984.17185 -7626.71975705\n",
"Distance to Line01, Distance to Line21:\n",
"65.230097079 258.298516816\n",
"X Y is :\n",
"4864852.40896 -7491.38235815\n",
"Distance to Line01, Distance to Line21:\n",
"-116.632911307 74.5356474677\n",
"X Y is :\n",
"4864983.72375 -7614.10764435\n",
"Distance to Line01, Distance to Line21:\n",
"53.9385284168 247.242048423\n",
"X Y is :\n",
"4864983.28138 -7612.45258171\n",
"Distance to Line01, Distance to Line21:\n",
"52.273379218 245.594388923\n",
"X Y is :\n",
"4864980.78958 -7613.34710278\n",
"Distance to Line01, Distance to Line21:\n",
"51.8677321075 245.084154085\n",
"X Y is :\n",
"4864980.4138 -7607.21009105\n",
"Distance to Line01, Distance to Line21:\n",
"46.2978803116 239.623206311\n",
"X Y is :\n",
"4864982.5447 -7611.82984729\n",
"Distance to Line01, Distance to Line21:\n",
"51.3742210039 244.681946097\n",
"X Y is :\n",
"4864979.78967 -7605.60096608\n",
"Distance to Line01, Distance to Line21:\n",
"44.5861767402 237.921747093\n",
"X Y is :\n",
"4864979.75207 -7605.29391568\n",
"Distance to Line01, Distance to Line21:\n",
"44.2985185007 237.638882953\n",
"X Y is :\n",
"4864994.5054 -7636.67193426\n",
"Distance to Line01, Distance to Line21:\n",
"78.9115823768 272.142152939\n",
"X Y is :\n",
"4864979.75007 -7603.28401983\n",
"Distance to Line01, Distance to Line21:\n",
"42.5322481821 235.91249649\n",
"X Y is :\n",
"4864979.76815 -7605.91337522\n",
"Distance to Line01, Distance to Line21:\n",
"44.8502806858 238.178891162\n",
"X Y is :\n",
"4864980.14612 -7609.23404935\n",
"Distance to Line01, Distance to Line21:\n",
"47.9475660458 241.223333647\n",
"X Y is :\n",
"4864936.04595 -7531.6119715\n",
"Distance to Line01, Distance to Line21:\n",
"-41.3126041062 151.96987778\n",
"X Y is :\n",
"4864983.03756 -7623.38783273\n",
"Distance to Line01, Distance to Line21:\n",
"61.7613386472 254.856477228\n",
"X Y is :\n",
"4864932.64518 -7678.41893559\n",
"Distance to Line01, Distance to Line21:\n",
"86.0034128091 276.24911243\n",
"X Y is :\n",
"4864931.71858 -7672.05056802\n",
"Distance to Line01, Distance to Line21:\n",
"79.9670122366 270.307025935\n",
"X Y is :\n",
"4864930.79298 -7664.47467795\n",
"Distance to Line01, Distance to Line21:\n",
"72.8705156552 263.328882364\n",
"X Y is :\n",
"4864956.64314 -7637.31323249\n",
"Distance to Line01, Distance to Line21:\n",
"61.3731561709 253.271985677\n",
"X Y is :\n",
"4864911.33455 -7639.07768842\n",
"Distance to Line01, Distance to Line21:\n",
"41.2611681519 231.546524717\n",
"X Y is :\n",
"4864979.38159 -7606.7550435\n",
"Distance to Line01, Distance to Line21:\n",
"45.4047167625 238.703129847\n",
"X Y is :\n",
"4865000.38462 -7637.41601804\n",
"Distance to Line01, Distance to Line21:\n",
"82.3759312295 275.79652252\n",
"X Y is :\n",
"4865002.35362 -7638.98965738\n",
"Distance to Line01, Distance to Line21:\n",
"84.6994422981 278.157345488\n",
"X Y is :\n",
"4865003.45519 -7639.59401333\n",
"Distance to Line01, Distance to Line21:\n",
"85.7569035228 279.241167729\n",
"X Y is :\n",
"4865003.36365 -7639.51550852\n",
"Distance to Line01, Distance to Line21:\n",
"85.6441900539 279.126826073\n",
"X Y is :\n",
"4865003.46403 -7639.6088543\n",
"Distance to Line01, Distance to Line21:\n",
"85.7741647726 279.258441913\n",
"X Y is :\n",
"4865003.47612 -7639.60140902\n",
"Distance to Line01, Distance to Line21:\n",
"85.7734052234 279.258251508\n",
"X Y is :\n",
"4865003.47087 -7639.60828508\n",
"Distance to Line01, Distance to Line21:\n",
"85.7769349312 279.261461666\n",
"X Y is :\n",
"4865003.34542 -7639.42944556\n",
"Distance to Line01, Distance to Line21:\n",
"85.5598850858 279.043596881\n",
"X Y is :\n",
"4864956.61655 -7637.33205653\n",
"Distance to Line01, Distance to Line21:\n",
"61.3769745541 253.274503381\n",
"X Y is :\n",
"4864948.12967 -7644.69177244\n",
"Distance to Line01, Distance to Line21:\n",
"63.7835639662 255.239138224\n",
"X Y is :\n",
"4864931.69405 -7649.8681963\n",
"Distance to Line01, Distance to Line21:\n",
"60.4723071541 251.25242011\n",
"X Y is :\n",
"4864980.8337 -7610.26572945\n",
"Distance to Line01, Distance to Line21:\n",
"49.1824257361 242.461637864\n",
"X Y is :\n",
"4864979.77889 -7605.94002411\n",
"Distance to Line01, Distance to Line21:\n",
"44.8788215936 238.20727649\n",
"X Y is :\n",
"4864979.77606 -7605.71401648\n",
"Distance to Line01, Distance to Line21:\n",
"44.6789622042 238.011811087\n",
"X Y is :\n",
"4864979.7732 -7605.92157053\n",
"Distance to Line01, Distance to Line21:\n",
"44.8598947944 238.188518411\n",
"X Y is :\n",
"4864979.75516 -7605.64238354\n",
"Distance to Line01, Distance to Line21:\n",
"44.6060553716 237.939600215\n",
"X Y is :\n",
"4864979.87027 -7605.13648933\n",
"Distance to Line01, Distance to Line21:\n",
"44.2167557463 237.564366978\n",
"X Y is :\n",
"4864979.73728 -7605.67547399\n",
"Distance to Line01, Distance to Line21:\n",
"44.6265707143 237.958834889\n",
"X Y is :\n",
"4864979.61865 -7605.34559794\n",
"Distance to Line01, Distance to Line21:\n",
"44.2801209556 237.614809892\n",
"X Y is :\n",
"4864979.7543 -7605.76403443\n",
"Distance to Line01, Distance to Line21:\n",
"44.7124923893 238.043589108\n",
"X Y is :\n",
"4864979.93926 -7605.6952554\n",
"Distance to Line01, Distance to Line21:\n",
"44.7405128597 238.079420305\n",
"X Y is :\n",
"4864979.89838 -7605.9852225\n",
"Distance to Line01, Distance to Line21:\n",
"44.9756491289 238.307368322\n",
"X Y is :\n",
"4864979.82944 -7605.52931979\n",
"Distance to Line01, Distance to Line21:\n",
"44.5422660259 237.880646284\n",
"X Y is :\n",
"4864980.17943 -7604.49993596\n",
"Distance to Line01, Distance to Line21:\n",
"43.8054724947 237.17650759\n",
"X Y is :\n",
"4864998.35383 -7637.66906896\n",
"Distance to Line01, Distance to Line21:\n",
"81.6272833662 274.972098653\n",
"X Y is :\n",
"4864979.80361 -7605.76745735\n",
"Distance to Line01, Distance to Line21:\n",
"44.7390745415 238.071821084\n",
"X Y is :\n",
"4864979.79409 -7605.67113545\n",
"Distance to Line01, Distance to Line21:\n",
"44.649922784 237.984252429\n",
"X Y is :\n",
"4864938.08015 -7529.35669628\n",
"Distance to Line01, Distance to Line21:\n",
"-42.3208971013 151.077280972\n",
"X Y is :\n",
"4864935.64305 -7529.50127654\n",
"Distance to Line01, Distance to Line21:\n",
"-43.3590699391 149.951333892\n",
"X Y is :\n",
"4864933.95679 -7530.39883209\n",
"Distance to Line01, Distance to Line21:\n",
"-43.3769277296 149.856890413\n",
"X Y is :\n",
"4864984.46242 -7628.56512399\n",
"Distance to Line01, Distance to Line21:\n",
"66.9898192269 260.0316782\n",
"X Y is :\n",
"4864988.22235 -7631.64243198\n",
"Distance to Line01, Distance to Line21:\n",
"71.4902409876 264.60191056\n",
"X Y is :\n",
"4865001.83077 -7638.36074244\n",
"Distance to Line01, Distance to Line21:\n",
"83.8970880388 277.349278715\n",
"X Y is :\n",
"4865005.19325 -7639.6894452\n",
"Distance to Line01, Distance to Line21:\n",
"86.6716762137 280.214591466\n",
"X Y is :\n",
"4865005.37121 -7639.74389497\n",
"Distance to Line01, Distance to Line21:\n",
"86.8045828668 280.352615369\n",
"X Y is :\n",
"4865005.13006 -7639.66523104\n",
"Distance to Line01, Distance to Line21:\n",
"86.6202009358 280.16139642\n",
"X Y is :\n",
"4865005.29639 -7639.70237591\n",
"Distance to Line01, Distance to Line21:\n",
"86.7323471701 280.278598666\n",
"X Y is :\n",
"4865004.41445 -7639.48888824\n",
"Distance to Line01, Distance to Line21:\n",
"86.1231892968 279.642960794\n",
"X Y is :\n",
"4864998.15312 -7637.80778133\n",
"Distance to Line01, Distance to Line21:\n",
"81.6531565676 274.988222317\n",
"X Y is :\n",
"4864990.83181 -7633.25276123\n",
"Distance to Line01, Distance to Line21:\n",
"74.1521749762 267.322738445\n",
"X Y is :\n",
"4864984.85545 -7628.8970214\n",
"Distance to Line01, Distance to Line21:\n",
"67.4692302917 260.518183283\n",
"X Y is :\n",
"4864982.48488 -7623.72531092\n",
"Distance to Line01, Distance to Line21:\n",
"61.7935187866 254.862695464\n",
"X Y is :\n",
"4864966.96665 -7635.1346741\n",
"Distance to Line01, Distance to Line21:\n",
"64.3953082075 256.697080544\n",
"X Y is :\n",
"4864950.85333 -7642.55717661\n",
"Distance to Line01, Distance to Line21:\n",
"63.210892265 254.803782335\n",
"X Y is :\n",
"4864956.63077 -7637.30477667\n",
"Distance to Line01, Distance to Line21:\n",
"61.3598126805 253.258379154\n",
"X Y is :\n",
"4864980.16849 -7611.22695579\n",
"Distance to Line01, Distance to Line21:\n",
"49.7086469092 242.945577546\n",
"X Y is :\n",
"4864979.92126 -7607.57764265\n",
"Distance to Line01, Distance to Line21:\n",
"46.3852222817 239.686083313\n",
"X Y is :\n",
"4864979.40517 -7606.86603801\n",
"Distance to Line01, Distance to Line21:\n",
"45.5134735815 238.810501403\n",
"X Y is :\n",
"4864979.41022 -7606.84183519\n",
"Distance to Line01, Distance to Line21:\n",
"45.4946334315 238.792318517\n",
"X Y is :\n",
"4864981.38697 -7599.2599393\n",
"Distance to Line01, Distance to Line21:\n",
"39.7804540337 233.297719472\n",
"X Y is :\n",
"4864981.53293 -7599.4520664\n",
"Distance to Line01, Distance to Line21:\n",
"40.0189834707 233.537514451\n",
"X Y is :\n",
"4864981.71047 -7599.88200664\n",
"Distance to Line01, Distance to Line21:\n",
"40.4814861049 233.997655496\n",
"X Y is :\n",
"4864980.40016 -7604.18653464\n",
"Distance to Line01, Distance to Line21:\n",
"43.6357412102 237.020695939\n",
"X Y is :\n",
"4864980.35077 -7604.09448177\n",
"Distance to Line01, Distance to Line21:\n",
"43.5312778604 236.916341927\n",
"X Y is :\n",
"4864982.16725 -7618.90789956\n",
"Distance to Line01, Distance to Line21:\n",
"57.4104818573 250.56435631\n",
"X Y is :\n",
"4864982.65738 -7623.72965985\n",
"Distance to Line01, Distance to Line21:\n",
"61.8798071576 254.954906527\n",
"X Y is :\n",
"4864848.83502 -7495.86357722\n",
"Distance to Line01, Distance to Line21:\n",
"-114.405690539 76.5492841558\n",
"X Y is :\n",
"4864854.69794 -7492.48240572\n",
"Distance to Line01, Distance to Line21:\n",
"-114.572385972 76.6540456104\n",
"X Y is :\n",
"4864955.05539 -7641.32183833\n",
"Distance to Line01, Distance to Line21:\n",
"64.1348590112 255.898691365\n",
"X Y is :\n",
"4864943.61227 -7651.62051557\n",
"Distance to Line01, Distance to Line21:\n",
"67.7094024092 258.86987213\n",
"X Y is :\n",
"4864914.73879 -7642.70820955\n",
"Distance to Line01, Distance to Line21:\n",
"46.0774331585 236.409212499\n",
"X Y is :\n",
"4864923.62981 -7649.85478418\n",
"Distance to Line01, Distance to Line21:\n",
"56.6050686045 247.104517259\n",
"X Y is :\n",
"4864925.92699 -7647.54286938\n",
"Distance to Line01, Distance to Line21:\n",
"55.6727605879 246.298192904\n",
"X Y is :\n",
"4864913.31932 -7641.4860856\n",
"Distance to Line01, Distance to Line21:\n",
"44.3253913622 234.632015209\n",
"X Y is :\n",
"4864982.79247 -7626.69910792\n",
"Distance to Line01, Distance to Line21:\n",
"64.5524854397 257.573262483\n",
"X Y is :\n",
"4864987.85108 -7629.79153119\n",
"Distance to Line01, Distance to Line21:\n",
"69.6870766912 262.822605747\n",
"X Y is :\n",
"4864986.0852 -7629.3631052\n",
"Distance to Line01, Distance to Line21:\n",
"68.4665335099 261.549061942\n",
"X Y is :\n",
"4864983.48248 -7627.42286701\n",
"Distance to Line01, Distance to Line21:\n",
"65.5180586914 258.54848606\n",
"X Y is :\n",
"4864993.41733 -7633.86342045\n",
"Distance to Line01, Distance to Line21:\n",
"75.9246392783 269.173134304\n",
"X Y is :\n",
"4864994.52278 -7637.07012565\n",
"Distance to Line01, Distance to Line21:\n",
"79.2696255835 272.492886047\n",
"X Y is :\n",
"4865002.29256 -7638.2726773\n",
"Distance to Line01, Distance to Line21:\n",
"84.0405167484 277.510545126\n",
"X Y is :\n",
"4865005.33515 -7639.75213454\n",
"Distance to Line01, Distance to Line21:\n",
"86.7945777435 280.341190101\n",
"X Y is :\n",
"4865005.54918 -7639.82064174\n",
"Distance to Line01, Distance to Line21:\n",
"86.9570792314 280.50978619\n",
"X Y is :\n",
"4865003.75824 -7639.18107482\n",
"Distance to Line01, Distance to Line21:\n",
"85.5391018884 279.042131948\n",
"X Y is :\n",
"4864908.7124 -7638.94092475\n",
"Distance to Line01, Distance to Line21:\n",
"39.8874145223 230.084142843\n",
"X Y is :\n",
"4865005.50081 -7639.81810191\n",
"Distance to Line01, Distance to Line21:\n",
"86.9317190449 280.482791148\n",
"X Y is :\n",
"4864908.66743 -7638.82447998\n",
"Distance to Line01, Distance to Line21:\n",
"39.7636384371 229.961114784\n",
"X Y is :\n",
"4865005.20141 -7639.71532011\n",
"Distance to Line01, Distance to Line21:\n",
"86.6983040539 280.240989249\n",
"X Y is :\n",
"4864908.62202 -7638.86239134\n",
"Distance to Line01, Distance to Line21:\n",
"39.7752259027 229.970366679\n",
"X Y is :\n",
"4865004.97883 -7639.50566513\n",
"Distance to Line01, Distance to Line21:\n",
"86.4077486249 279.946847555\n",
"X Y is :\n",
"4864929.94241 -7652.60591793\n",
"Distance to Line01, Distance to Line21:\n",
"62.0394249344 252.704094629\n",
"X Y is :\n",
"4865002.78418 -7638.54003696\n",
"Distance to Line01, Distance to Line21:\n",
"84.5103842255 277.992224467\n",
"X Y is :\n",
"4865005.39674 -7639.76456973\n",
"Distance to Line01, Distance to Line21:\n",
"86.8349493562 280.383460394\n",
"X Y is :\n",
"4864956.6582 -7640.12581549\n",
"Distance to Line01, Distance to Line21:\n",
"63.8506708244 255.694114664\n",
"X Y is :\n",
"4864956.51815 -7637.43225914\n",
"Distance to Line01, Distance to Line21:\n",
"61.4179411238 253.310050294\n",
"X Y is :\n",
"4864977.73209 -7629.89498687\n",
"Distance to Line01, Distance to Line21:\n",
"64.9401257662 257.721087064\n",
"X Y is :\n",
"4864954.74188 -7641.01266907\n",
"Distance to Line01, Distance to Line21:\n",
"63.7134264125 255.472483019\n",
"X Y is :\n",
"4864980.77776 -7628.66240167\n",
"Distance to Line01, Distance to Line21:\n",
"65.3136483262 258.225212452\n",
"X Y is :\n",
"4864983.36881 -7627.57707379\n",
"Distance to Line01, Distance to Line21:\n",
"65.5991551319 258.622557218\n",
"X Y is :\n",
"4864982.54543 -7627.03291093\n",
"Distance to Line01, Distance to Line21:\n",
"64.7275629037 257.733098629\n",
"X Y is :\n",
"4864934.22173 -7654.01882343\n",
"Distance to Line01, Distance to Line21:\n",
"65.3263062255 256.111966431\n",
"X Y is :\n",
"4864933.68565 -7661.20342867\n",
"Distance to Line01, Distance to Line21:\n",
"71.3803133075 262.004478597\n",
"X Y is :\n",
"4864932.5098 -7678.73790274\n",
"Distance to Line01, Distance to Line21:\n",
"86.2188401347 276.453482952\n",
"X Y is :\n",
"4864932.4727 -7678.9509227\n",
"Distance to Line01, Distance to Line21:\n",
"86.3881981834 276.617313881\n",
"X Y is :\n",
"4864932.47697 -7679.09274284\n",
"Distance to Line01, Distance to Line21:\n",
"86.5148035668 276.741248982\n",
"X Y is :\n",
"4864932.48895 -7678.86146871\n",
"Distance to Line01, Distance to Line21:\n",
"86.3173984875 276.548858464\n",
"X Y is :\n",
"4864932.44607 -7679.01402184\n",
"Distance to Line01, Distance to Line21:\n",
"86.4308851038 276.657818635\n",
"X Y is :\n",
"4864919.58587 -7647.52124001\n",
"Distance to Line01, Distance to Line21:\n",
"52.622116363 243.027075384\n",
"X Y is :\n",
"4864926.57656 -7647.12175758\n",
"Distance to Line01, Distance to Line21:\n",
"55.6134483135 246.269880484\n",
"X Y is :\n",
"4864981.55669 -7621.00657527\n",
"Distance to Line01, Distance to Line21:\n",
"58.9618637118 252.052749689\n",
"X Y is :\n",
"4864910.52563 -7633.82949318\n",
"Distance to Line01, Distance to Line21:\n",
"36.2648922821 226.626395456\n",
"X Y is :\n",
"4864906.27908 -7628.15230705\n",
"Distance to Line01, Distance to Line21:\n",
"29.2483215145 219.574743541\n",
"X Y is :\n",
"4864906.5932 -7629.38920858\n",
"Distance to Line01, Distance to Line21:\n",
"30.4848798234 220.797656744\n",
"X Y is :\n",
"4864907.08489 -7631.43421476\n",
"Distance to Line01, Distance to Line21:\n",
"32.5161015788 222.805355575\n",
"X Y is :\n",
"4864963.90173 -7636.25221075\n",
"Distance to Line01, Distance to Line21:\n",
"63.9115301547 256.084315766\n",
"X Y is :\n",
"4864973.00878 -7630.9394519\n",
"Distance to Line01, Distance to Line21:\n",
"63.5993060154 256.194960637\n",
"X Y is :\n",
"4864965.90402 -7634.6683932\n",
"Distance to Line01, Distance to Line21:\n",
"63.4777291455 255.751751734\n",
"X Y is :\n",
"4864980.85518 -7621.92483813\n",
"Distance to Line01, Distance to Line21:\n",
"59.4329979249 252.481192116\n",
"X Y is :\n",
"4864983.31368 -7622.98657841\n",
"Distance to Line01, Distance to Line21:\n",
"61.5409259441 254.653660085\n",
"X Y is :\n",
"4864989.74662 -7629.87892075\n",
"Distance to Line01, Distance to Line21:\n",
"70.6700760098 263.869902064\n",
"X Y is :\n",
"4865003.61173 -7639.47092169\n",
"Distance to Line01, Distance to Line21:\n",
"85.7236321286 279.215796574\n",
"X Y is :\n",
"4865002.99106 -7638.96759547\n",
"Distance to Line01, Distance to Line21:\n",
"84.9848170416 278.465364771\n",
"X Y is :\n",
"4864981.93922 -7623.43045504\n",
"Distance to Line01, Distance to Line21:\n",
"61.2736654593 254.329694323\n",
"X Y is :\n",
"4864980.53257 -7607.61981202\n",
"Distance to Line01, Distance to Line21:\n",
"46.7145225008 240.035841193\n",
"X Y is :\n",
"4865001.49125 -7639.08745806\n",
"Distance to Line01, Distance to Line21:\n",
"84.3730485216 277.798965532\n",
"X Y is :\n",
"4864979.88235 -7607.02898663\n",
"Distance to Line01, Distance to Line21:\n",
"45.8847288281 239.195140767\n",
"X Y is :\n",
"4864979.80584 -7606.20291771\n",
"Distance to Line01, Distance to Line21:\n",
"45.1226076231 238.446775389\n",
"X Y is :\n",
"4864979.86251 -7606.3217673\n",
"Distance to Line01, Distance to Line21:\n",
"45.2540876692 238.577867055\n",
"X Y is :\n",
"4864980.04856 -7606.0012936\n",
"Distance to Line01, Distance to Line21:\n",
"45.0615637897 238.398195221\n",
"X Y is :\n",
"4864980.55967 -7621.15986016\n",
"Distance to Line01, Distance to Line21:\n",
"58.6198300209 251.672936344\n",
"X Y is :\n",
"4864979.91687 -7606.20623112\n",
"Distance to Line01, Distance to Line21:\n",
"45.178601424 238.506571301\n",
"X Y is :\n",
"4864980.11809 -7604.61034182\n",
"Distance to Line01, Distance to Line21:\n",
"43.8731210879 237.239824912\n",
"X Y is :\n",
"4864979.82207 -7605.46585724\n",
"Distance to Line01, Distance to Line21:\n",
"44.4830012955 237.822386247\n",
"X Y is :\n",
"4864981.88986 -7600.68059968\n",
"Distance to Line01, Distance to Line21:\n",
"41.2686611283 234.775204859\n",
"X Y is :\n",
"4864981.99573 -7597.46825404\n",
"Distance to Line01, Distance to Line21:\n",
"38.4978432286 232.071931842\n",
"X Y is :\n",
"4864981.4828 -7596.50095462\n",
"Distance to Line01, Distance to Line21:\n",
"37.4030274607 230.978475881\n",
"X Y is :\n",
"4864978.09407 -7590.65374385\n",
"Distance to Line01, Distance to Line21:\n",
"30.6472407427 224.220871438\n",
"X Y is :\n",
"4864980.54351 -7621.44826889\n",
"Distance to Line01, Distance to Line21:\n",
"58.86541653 251.912226776\n",
"X Y is :\n",
"4864861.29044 -7505.45799023\n",
"Distance to Line01, Distance to Line21:\n",
"-100.023978769 91.1741775513\n",
"X Y is :\n",
"4864856.74573 -7506.38522338\n",
"Distance to Line01, Distance to Line21:\n",
"-101.382379257 89.6390224387\n",
"X Y is :\n",
"4864854.07446 -7507.18162837\n",
"Distance to Line01, Distance to Line21:\n",
"-101.960005353 88.9525069397\n",
"X Y is :\n",
"4864856.30691 -7506.690841\n",
"Distance to Line01, Distance to Line21:\n",
"-101.323750769 89.6762885775\n",
"X Y is :\n",
"4864866.18807 -7510.83669954\n",
"Distance to Line01, Distance to Line21:\n",
"-92.9582876362 98.3035644312\n",
"X Y is :\n",
"4864860.9715 -7503.20319242\n",
"Distance to Line01, Distance to Line21:\n",
"-102.156873418 89.0749940937\n",
"X Y is :\n",
"4864863.45608 -7521.10053273\n",
"Distance to Line01, Distance to Line21:\n",
"-85.2496154813 105.713033008\n",
"X Y is :\n",
"4864865.48278 -7523.34853464\n",
"Distance to Line01, Distance to Line21:\n",
"-82.306223161 108.682341686\n",
"X Y is :\n",
"4864855.8324 -7500.84971601\n",
"Distance to Line01, Distance to Line21:\n",
"-106.680921139 84.4187012674\n",
"X Y is :\n",
"4864865.54144 -7510.1208608\n",
"Distance to Line01, Distance to Line21:\n",
"-93.8961671752 97.3573881538\n",
"X Y is :\n",
"4864863.70002 -7501.6992234\n",
"Distance to Line01, Distance to Line21:\n",
"-102.173336602 89.1834800521\n",
"X Y is :\n",
"4864863.14338 -7502.11833131\n",
"Distance to Line01, Distance to Line21:\n",
"-102.071355742 89.2577382175\n",
"X Y is :\n",
"4864927.40906 -7649.29860686\n",
"Distance to Line01, Distance to Line21:\n",
"57.9234049381 248.565565779\n",
"X Y is :\n",
"4864928.8348 -7649.16784351\n",
"Distance to Line01, Distance to Line21:\n",
"58.4901921216 249.184620408\n",
"X Y is :\n",
"4864940.57769 -7647.60162384\n",
"Distance to Line01, Distance to Line21:\n",
"62.7287599834 253.863404892\n",
"X Y is :\n",
"4864956.82088 -7639.4658925\n",
"Distance to Line01, Distance to Line21:\n",
"63.3488338535 255.211063469\n",
"X Y is :\n",
"4864983.39565 -7625.43803345\n",
"Distance to Line01, Distance to Line21:\n",
"63.7332482755 256.800106405\n",
"X Y is :\n",
"4864982.4284 -7627.68779431\n",
"Distance to Line01, Distance to Line21:\n",
"65.2468004704 258.235241036\n",
"X Y is :\n",
"4864989.35549 -7632.50775645\n",
"Distance to Line01, Distance to Line21:\n",
"72.7920115339 265.925954592\n",
"X Y is :\n",
"4864909.12007 -7638.66103792\n",
"Distance to Line01, Distance to Line21:\n",
"39.8364933413 230.052987382\n",
"X Y is :\n",
"4864908.59063 -7638.79646456\n",
"Distance to Line01, Distance to Line21:\n",
"39.7023170251 229.897674996\n",
"X Y is :\n",
"4864908.50388 -7638.79189468\n",
"Distance to Line01, Distance to Line21:\n",
"39.6568265701 229.849253153\n",
"X Y is :\n",
"4864929.24109 -7659.6134744\n",
"Distance to Line01, Distance to Line21:\n",
"67.8589279996 258.359865825\n",
"X Y is :\n",
"4864928.01566 -7656.32472098\n",
"Distance to Line01, Distance to Line21:\n",
"64.3845198898 254.908143835\n",
"X Y is :\n",
"4864929.37931 -7655.75197084\n",
"Distance to Line01, Distance to Line21:\n",
"64.5334201443 255.115934511\n",
"X Y is :\n",
"4864932.51003 -7654.95058936\n",
"Distance to Line01, Distance to Line21:\n",
"65.3263342891 256.0338426\n",
"X Y is :\n",
"4864928.21805 -7651.72414197\n",
"Distance to Line01, Distance to Line21:\n",
"60.4405472354 251.062674411\n",
"X Y is :\n",
"4864930.796 -7665.51138561\n",
"Distance to Line01, Distance to Line21:\n",
"73.7825106063 264.22037436\n",
"X Y is :\n",
"4864933.21025 -7673.06996967\n",
"Distance to Line01, Distance to Line21:\n",
"81.5755214384 271.947235801\n",
"X Y is :\n",
"4864934.26594 -7673.39037062\n",
"Distance to Line01, Distance to Line21:\n",
"82.3616503403 272.76377224\n",
"X Y is :\n",
"4864934.0112 -7674.85229378\n",
"Distance to Line01, Distance to Line21:\n",
"83.5238822586 273.888069015\n",
"X Y is :\n",
"4864933.45199 -7676.95761853\n",
"Distance to Line01, Distance to Line21:\n",
"85.1056549393 275.408509968\n",
"X Y is :\n",
"4864934.07475 -7674.83880276\n",
"Distance to Line01, Distance to Line21:\n",
"83.5424146934 273.909083418\n",
"X Y is :\n",
"4864934.18565 -7674.70829191\n",
"Distance to Line01, Distance to Line21:\n",
"83.4808078 273.853934379\n",
"X Y is :\n",
"4864933.40327 -7677.12833188\n",
"Distance to Line01, Distance to Line21:\n",
"85.232298299 275.530062331\n",
"X Y is :\n",
"4864934.2567 -7675.90562139\n",
"Distance to Line01, Distance to Line21:\n",
"84.5663994822 274.918199852\n",
"X Y is :\n",
"4864948.06528 -7644.86054274\n",
"Distance to Line01, Distance to Line21:\n",
"63.9010121689 255.350988394\n",
"X Y is :\n",
"4864955.59984 -7641.50658761\n",
"Distance to Line01, Distance to Line21:\n",
"64.557423054 256.336549601\n",
"X Y is :\n",
"4864963.72823 -7640.71666829\n",
"Distance to Line01, Distance to Line21:\n",
"67.7497562663 259.827750835\n",
"X Y is :\n",
"4864994.28493 -7629.98790638\n",
"Distance to Line01, Distance to Line21:\n",
"72.9355371134 266.291296299\n",
"X Y is :\n",
"4864986.98876 -7627.5893052\n",
"Distance to Line01, Distance to Line21:\n",
"67.3405711589 260.489836909\n",
"X Y is :\n",
"4864987.56139 -7626.5325631\n",
"Distance to Line01, Distance to Line21:\n",
"66.6861986565 259.87641965\n",
"X Y is :\n",
"4864984.61861 -7618.87256666\n",
"Distance to Line01, Distance to Line21:\n",
"58.5514276663 251.791401627\n",
"X Y is :\n",
"4865004.67526 -7638.16019659\n",
"Distance to Line01, Distance to Line21:\n",
"85.0808791709 278.636148916\n",
"X Y is :\n",
"4865001.10212 -7634.6228717\n",
"Distance to Line01, Distance to Line21:\n",
"80.2657214472 273.766832059\n",
"X Y is :\n",
"4865005.98508 -7639.36379456\n",
"Distance to Line01, Distance to Line21:\n",
"86.7642223243 280.341195691\n",
"X Y is :\n",
"4865005.47559 -7639.11843731\n",
"Distance to Line01, Distance to Line21:\n",
"86.305142234 279.869244266\n",
"X Y is :\n",
"4865005.96316 -7639.38033784\n",
"Distance to Line01, Distance to Line21:\n",
"86.768276384 280.344157549\n",
"X Y is :\n",
"4865005.8989 -7639.41626193\n",
"Distance to Line01, Distance to Line21:\n",
"86.7691061604 280.342034574\n",
"X Y is :\n",
"4865005.86595 -7639.47012117\n",
"Distance to Line01, Distance to Line21:\n",
"86.8006550089 280.37136469\n",
"X Y is :\n",
"4864984.20115 -7615.92924672\n",
"Distance to Line01, Distance to Line21:\n",
"55.7667020027 249.050642318\n",
"X Y is :\n",
"4864956.103 -7640.47437687\n",
"Distance to Line01, Distance to Line21:\n",
"63.8913783689 255.708552034\n",
"X Y is :\n",
"4864959.30601 -7643.61296399\n",
"Distance to Line01, Distance to Line21:\n",
"68.1793677518 260.045733047\n",
"X Y is :\n",
"4864957.6115 -7646.84747614\n",
"Distance to Line01, Distance to Line21:\n",
"70.2101344828 261.95317124\n",
"X Y is :\n",
"4864956.05991 -7639.9851881\n",
"Distance to Line01, Distance to Line21:\n",
"63.4411215638 255.266518721\n",
"X Y is :\n",
"4864955.14998 -7642.4267305\n",
"Distance to Line01, Distance to Line21:\n",
"65.1505196283 256.895683576\n",
"X Y is :\n",
"4864991.8923 -7634.46440312\n",
"Distance to Line01, Distance to Line21:\n",
"75.7233808064 268.906802222\n",
"X Y is :\n",
"4864980.49278 -7609.53065419\n",
"Distance to Line01, Distance to Line21:\n",
"48.3738094738 241.655757236\n",
"X Y is :\n",
"4864950.54088 -7643.01486009\n",
"Distance to Line01, Distance to Line21:\n",
"63.463496887 255.036403964\n",
"X Y is :\n",
"4864948.20571 -7644.65877187\n",
"Distance to Line01, Distance to Line21:\n",
"63.7909330337 255.249812239\n",
"X Y is :\n",
"4864956.49534 -7637.53370578\n",
"Distance to Line01, Distance to Line21:\n",
"61.4961348591 253.385432613\n",
"X Y is :\n",
"4864979.87277 -7605.36530407\n",
"Distance to Line01, Distance to Line21:\n",
"44.4189238397 237.762073858\n",
"X Y is :\n",
"4864933.80643 -7533.22612602\n",
"Distance to Line01, Distance to Line21:\n",
"-40.9655755891 152.206801993\n",
"X Y is :\n",
"4864933.29989 -7532.72949066\n",
"Distance to Line01, Distance to Line21:\n",
"-41.6439482042 151.520655638\n",
"X Y is :\n",
"4864933.91878 -7532.87487451\n",
"Distance to Line01, Distance to Line21:\n",
"-41.2203701922 151.96290359\n",
"X Y is :\n",
"4864935.97109 -7531.6322746\n",
"Distance to Line01, Distance to Line21:\n",
"-41.3305602263 151.948910306\n",
"X Y is :\n",
"4864917.63741 -7493.05727536\n",
"Distance to Line01, Distance to Line21:\n",
"-83.9765414721 109.431061081\n",
"X Y is :\n",
"4864915.72415 -7488.10172239\n",
"Distance to Line01, Distance to Line21:\n",
"-89.2437692305 104.195690795\n",
"X Y is :\n",
"4864944.71227 -7526.99164014\n",
"Distance to Line01, Distance to Line21:\n",
"-41.227374079 152.448858722\n",
"X Y is :\n",
"4864935.96844 -7531.36664784\n",
"Distance to Line01, Distance to Line21:\n",
"-41.5651306033 151.719527815\n",
"X Y is :\n",
"4864934.58215 -7532.74218109\n",
"Distance to Line01, Distance to Line21:\n",
"-41.0197650703 152.189255912\n",
"X Y is :\n",
"4864941.19607 -7527.00832737\n",
"Distance to Line01, Distance to Line21:\n",
"-42.893792759 150.659615501\n",
"X Y is :\n",
"4864940.09011 -7527.85543706\n",
"Distance to Line01, Distance to Line21:\n",
"-42.6785199503 150.819521118\n",
"X Y is :\n",
"4864912.46443 -7540.59487205\n",
"Distance to Line01, Distance to Line21:\n",
"-44.6970018059 147.585412617\n",
"X Y is :\n",
"4864872.05365 -7434.39087547\n",
"Distance to Line01, Distance to Line21:\n",
"-157.297064064 35.6887576619\n",
"X Y is :\n",
"4864876.73282 -7430.5123272\n",
"Distance to Line01, Distance to Line21:\n",
"-158.466548856 34.7593793325\n",
"X Y is :\n",
"4864878.84538 -7427.03784647\n",
"Distance to Line01, Distance to Line21:\n",
"-160.508216824 32.8603734729\n",
"X Y is :\n",
"4864891.97033 -7421.96969968\n",
"Distance to Line01, Distance to Line21:\n",
"-158.684668074 35.2418985674\n",
"X Y is :\n",
"4864979.75861 -7605.74567226\n",
"Distance to Line01, Distance to Line21:\n",
"44.6984271838 238.030039198\n",
"X Y is :\n",
"4864979.75588 -7605.87278891\n",
"Distance to Line01, Distance to Line21:\n",
"44.808765348 238.137755045\n",
"X Y is :\n",
"4864979.76487 -7605.75686803\n",
"Distance to Line01, Distance to Line21:\n",
"44.7112528143 238.042860308\n",
"X Y is :\n",
"4864979.98092 -7607.3779872\n",
"Distance to Line01, Distance to Line21:\n",
"46.2383890477 239.545297508\n",
"X Y is :\n",
"4864979.74212 -7605.6951228\n",
"Distance to Line01, Distance to Line21:\n",
"44.6461427609 237.97818498\n",
"X Y is :\n",
"4864979.84881 -7605.24468539\n",
"Distance to Line01, Distance to Line21:\n",
"44.3015291531 237.646242279\n",
"X Y is :\n",
"4864980.04792 -7608.16939656\n",
"Distance to Line01, Distance to Line21:\n",
"46.9655194339 240.259029582\n",
"X Y is :\n",
"4864979.79149 -7606.10313205\n",
"Distance to Line01, Distance to Line21:\n",
"45.02810704 238.353758693\n",
"X Y is :\n",
"4864979.77095 -7606.00959234\n",
"Distance to Line01, Distance to Line21:\n",
"44.9361262417 238.262921495\n",
"X Y is :\n",
"4864979.91989 -7607.65525402\n",
"Distance to Line01, Distance to Line21:\n",
"46.4527359107 239.752006548\n",
"X Y is :\n",
"4864979.86011 -7606.86950666\n",
"Distance to Line01, Distance to Line21:\n",
"45.734027719 239.046835444\n",
"X Y is :\n",
"4864980.72255 -7608.41144722\n",
"Distance to Line01, Distance to Line21:\n",
"47.50065224 240.812852709\n",
"X Y is :\n",
"4864980.94297 -7615.85165906\n",
"Distance to Line01, Distance to Line21:\n",
"54.1408382387 247.312816593\n",
"X Y is :\n",
"4864982.52548 -7614.79063236\n",
"Distance to Line01, Distance to Line21:\n",
"53.9655169935 247.213716405\n",
"X Y is :\n",
"4864981.6155 -7611.47459342\n",
"Distance to Line01, Distance to Line21:\n",
"50.6179541068 243.900370946\n",
"X Y is :\n",
"4864980.64264 -7621.60592488\n",
"Distance to Line01, Distance to Line21:\n",
"59.0512769346 252.098406294\n",
"X Y is :\n",
"4864982.31815 -7625.26284339\n",
"Distance to Line01, Distance to Line21:\n",
"63.0642359531 256.097040448\n",
"X Y is :\n",
"4864983.01028 -7627.91658145\n",
"Distance to Line01, Distance to Line21:\n",
"65.7259374324 258.730100646\n",
"X Y is :\n",
"4864983.62058 -7628.28538808\n",
"Distance to Line01, Distance to Line21:\n",
"66.341644227 259.359736908\n",
"X Y is :\n",
"4864988.4421 -7631.23834951\n",
"Distance to Line01, Distance to Line21:\n",
"71.2403920103 264.367749463\n",
"X Y is :\n",
"4864988.30879 -7631.85415422\n",
"Distance to Line01, Distance to Line21:\n",
"71.7175260244 264.82799822\n",
"X Y is :\n",
"4864821.24507 -7342.18837569\n",
"Distance to Line01, Distance to Line21:\n",
"-262.570591572 -69.5219156975\n",
"X Y is :\n",
"4864812.07134 -7316.45163325\n",
"Distance to Line01, Distance to Line21:\n",
"-289.561309466 -96.3206062522\n",
"X Y is :\n",
"4864811.98073 -7316.63217902\n",
"Distance to Line01, Distance to Line21:\n",
"-289.446054653 -96.2120969878\n",
"X Y is :\n",
"4864812.5469 -7316.80863395\n",
"Distance to Line01, Distance to Line21:\n",
"-289.02039072 -95.7702172783\n",
"X Y is :\n",
"4864813.56109 -7318.98838416\n",
"Distance to Line01, Distance to Line21:\n",
"-286.621014295 -93.3788398636\n",
"X Y is :\n",
"4864826.56813 -7331.6910978\n",
"Distance to Line01, Distance to Line21:\n",
"-269.245532042 -75.8027482514\n",
"X Y is :\n",
"4864842.16893 -7371.44761001\n",
"Distance to Line01, Distance to Line21:\n",
"-226.868386256 -33.6724254137\n",
"X Y is :\n",
"4864845.56728 -7379.44566538\n",
"Distance to Line01, Distance to Line21:\n",
"-218.218894115 -25.0635361368\n",
"X Y is :\n",
"4864844.98159 -7379.44508198\n",
"Distance to Line01, Distance to Line21:\n",
"-218.499420195 -25.3644540289\n",
"X Y is :\n",
"4864825.55448 -7384.88312132\n",
"Distance to Line01, Distance to Line21:\n",
"-223.011109141 -30.661018254\n",
"X Y is :\n",
"4864866.42677 -7432.9578093\n",
"Distance to Line01, Distance to Line21:\n",
"-161.245908262 31.5723795447\n",
"X Y is :\n",
"4864870.16882 -7428.08718201\n",
"Distance to Line01, Distance to Line21:\n",
"-163.734778739 29.3106903238\n",
"X Y is :\n",
"4864854.42637 -7487.04035901\n",
"Distance to Line01, Distance to Line21:\n",
"-119.482019116 71.8431320863\n",
"X Y is :\n",
"4864927.31947 -7534.67702514\n",
"Distance to Line01, Distance to Line21:\n",
"-42.7926103178 150.124941603\n",
"X Y is :\n",
"4865001.06824 -7638.42205615\n",
"Distance to Line01, Distance to Line21:\n",
"83.5863806686 277.010788593\n",
"X Y is :\n",
"4864996.42058 -7637.32650854\n",
"Distance to Line01, Distance to Line21:\n",
"80.4021347044 273.68641162\n",
"X Y is :\n",
"4865005.28387 -7639.77999639\n",
"Distance to Line01, Distance to Line21:\n",
"86.7945366927 280.338809085\n",
"X Y is :\n",
"4865002.27084 -7638.56481662\n",
"Distance to Line01, Distance to Line21:\n",
"84.2867226904 277.750187216\n",
"X Y is :\n",
"4864979.88145 -7604.78177315\n",
"Distance to Line01, Distance to Line21:\n",
"43.9105528783 237.265605014\n",
"X Y is :\n",
"4864979.86677 -7605.62768851\n",
"Distance to Line01, Distance to Line21:\n",
"44.6465114662 237.984236752\n",
"X Y is :\n",
"4864979.80585 -7605.92499776\n",
"Distance to Line01, Distance to Line21:\n",
"44.8785122146 238.208204937\n",
"X Y is :\n",
"4864979.79907 -7605.73892164\n",
"Distance to Line01, Distance to Line21:\n",
"44.7118389808 238.04499448\n",
"X Y is :\n",
"4864982.24924 -7617.80030262\n",
"Distance to Line01, Distance to Line21:\n",
"56.4768687358 249.655616915\n",
"X Y is :\n",
"4864948.33948 -7644.67519023\n",
"Distance to Line01, Distance to Line21:\n",
"63.8693079683 255.332520897\n",
"X Y is :\n",
"4864932.79663 -7679.32296454\n",
"Distance to Line01, Distance to Line21:\n",
"86.8698358666 277.102840623\n",
"X Y is :\n",
"4864932.73321 -7678.55899918\n",
"Distance to Line01, Distance to Line21:\n",
"86.1685143364 276.41449606\n",
"X Y is :\n",
"4864898.04591 -7550.18295613\n",
"Distance to Line01, Distance to Line21:\n",
"-43.1690974205 148.420427046\n",
"X Y is :\n",
"4864900.81071 -7549.46534436\n",
"Distance to Line01, Distance to Line21:\n",
"-42.477549537 149.222556374\n",
"X Y is :\n",
"4864899.67598 -7549.87038255\n",
"Distance to Line01, Distance to Line21:\n",
"-42.6643075604 148.988216607\n",
"X Y is :\n",
"4864902.16406 -7548.7512411\n",
"Distance to Line01, Distance to Line21:\n",
"-42.4577279084 149.303719319\n",
"X Y is :\n",
"4864902.11724 -7548.9018332\n",
"Distance to Line01, Distance to Line21:\n",
"-42.3478457106 149.40897692\n",
"X Y is :\n",
"4864902.67859 -7548.50457223\n",
"Distance to Line01, Distance to Line21:\n",
"-42.4283850568 149.35589016\n",
"X Y is :\n",
"4864902.86837 -7548.52942301\n",
"Distance to Line01, Distance to Line21:\n",
"-42.3158239895 149.47456866\n",
"X Y is :\n",
"4864902.23187 -7548.84098749\n",
"Distance to Line01, Distance to Line21:\n",
"-42.3464834965 149.415541962\n",
"X Y is :\n",
"4864922.77035 -7648.33907989\n",
"Distance to Line01, Distance to Line21:\n",
"54.8629096229 245.362547608\n",
"X Y is :\n",
"4864922.15433 -7654.16488787\n",
"Distance to Line01, Distance to Line21:\n",
"59.6852537183 250.04762287\n",
"X Y is :\n",
"4864924.04739 -7652.8543067\n",
"Distance to Line01, Distance to Line21:\n",
"59.4392191262 249.89358869\n",
"X Y is :\n",
"4864925.45974 -7645.52866108\n",
"Distance to Line01, Distance to Line21:\n",
"53.6802721663 244.3294665\n",
"X Y is :\n",
"4864909.20935 -7639.29159323\n",
"Distance to Line01, Distance to Line21:\n",
"40.4329981066 230.640067691\n",
"X Y is :\n",
"4864919.43609 -7643.3224828\n",
"Distance to Line01, Distance to Line21:\n",
"48.8626979624 239.345904203\n",
"X Y is :\n",
"4864918.07029 -7648.218953\n",
"Distance to Line01, Distance to Line21:\n",
"52.5103358255 242.848627644\n",
"X Y is :\n",
"4864922.41095 -7539.07076114\n",
"Distance to Line01, Distance to Line21:\n",
"-41.2802794064 151.378935278\n",
"X Y is :\n",
"4864924.71843 -7653.60669987\n",
"Distance to Line01, Distance to Line21:\n",
"60.420874147 250.883664099\n",
"X Y is :\n",
"4864931.72851 -7670.05541918\n",
"Distance to Line01, Distance to Line21:\n",
"78.2194044785 268.599424955\n",
"X Y is :\n",
"4864929.32754 -7664.97102658\n",
"Distance to Line01, Distance to Line21:\n",
"72.6058479899 263.003297144\n",
"X Y is :\n",
"4864924.40258 -7653.73352169\n",
"Distance to Line01, Distance to Line21:\n",
"60.3812541465 250.830519695\n",
"X Y is :\n",
"4864922.11194 -7645.07463317\n",
"Distance to Line01, Distance to Line21:\n",
"51.6809345323 242.222528212\n",
"X Y is :\n",
"4864948.78734 -7644.30240655\n",
"Distance to Line01, Distance to Line21:\n",
"63.7560089153 255.242234282\n",
"X Y is :\n",
"4864958.88556 -7638.60408374\n",
"Distance to Line01, Distance to Line21:\n",
"63.5790055176 255.530292893\n",
"X Y is :\n",
"4864959.33054 -7638.79553794\n",
"Distance to Line01, Distance to Line21:\n",
"63.9599048562 255.922888104\n",
"X Y is :\n",
"4864957.9441 -7636.7184348\n",
"Distance to Line01, Distance to Line21:\n",
"61.4727172517 253.428691331\n",
"X Y is :\n",
"4864948.71785 -7644.33371011\n",
"Distance to Line01, Distance to Line21:\n",
"63.7502767722 255.233458807\n",
"X Y is :\n",
"4864950.03912 -7643.35825996\n",
"Distance to Line01, Distance to Line21:\n",
"63.5252211157 255.073822349\n",
"X Y is :\n",
"4864979.91039 -7606.18480118\n",
"Distance to Line01, Distance to Line21:\n",
"45.1566833428 238.484853626\n",
"X Y is :\n",
"4864968.32999 -7636.06248764\n",
"Distance to Line01, Distance to Line21:\n",
"65.862018258 258.192841113\n",
"X Y is :\n",
"4864948.39614 -7644.78693981\n",
"Distance to Line01, Distance to Line21:\n",
"63.9945463237 255.457511596\n",
"X Y is :\n",
"4864955.64776 -7640.61054588\n",
"Distance to Line01, Distance to Line21:\n",
"63.7933308617 255.591938742\n",
"X Y is :\n",
"4864983.36982 -7625.7302536\n",
"Distance to Line01, Distance to Line21:\n",
"63.9775619272 257.037711542\n",
"X Y is :\n",
"4864930.61986 -7650.70271631\n",
"Distance to Line01, Distance to Line21:\n",
"60.6917102165 251.417812922\n",
"X Y is :\n",
"4864979.9324 -7606.32617402\n",
"Distance to Line01, Distance to Line21:\n",
"45.2913744371 238.617501128\n",
"X Y is :\n",
"4864982.58081 -7619.57924769\n",
"Distance to Line01, Distance to Line21:\n",
"58.1978536501 251.352789729\n",
"X Y is :\n",
"4864929.32428 -7654.39315806\n",
"Distance to Line01, Distance to Line21:\n",
"63.3136491136 253.921257381\n",
"X Y is :\n",
"4864980.11129 -7606.46888692\n",
"Distance to Line01, Distance to Line21:\n",
"45.502243157 238.831764595\n",
"X Y is :\n",
"4864999.40579 -7636.63066321\n",
"Distance to Line01, Distance to Line21:\n",
"81.2181746713 274.620278533\n",
"X Y is :\n",
"4864932.202 -7670.87829764\n",
"Distance to Line01, Distance to Line21:\n",
"79.1685159368 269.54867338\n",
"X Y is :\n",
"4864979.68491 -7606.02563737\n",
"Distance to Line01, Distance to Line21:\n",
"44.9090846466 238.232563682\n",
"X Y is :\n",
"4864994.80655 -7631.78597538\n",
"Distance to Line01, Distance to Line21:\n",
"74.7641798214 268.102367411\n",
"X Y is :\n",
"4864982.01416 -7610.26503873\n",
"Distance to Line01, Distance to Line21:\n",
"49.7461895589 243.066538701\n",
"X Y is :\n",
"4864993.14918 -7628.26948143\n",
"Distance to Line01, Distance to Line21:\n",
"70.8832314081 264.233584493\n",
"X Y is :\n",
"4864979.75862 -7605.69404148\n",
"Distance to Line01, Distance to Line21:\n",
"44.6530825542 237.985721144\n",
"X Y is :\n",
"4865001.12347 -7637.64454887\n",
"Distance to Line01, Distance to Line21:\n",
"82.9298915833 276.371679083\n",
"X Y is :\n",
"4864932.91018 -7677.9943139\n",
"Distance to Line01, Distance to Line21:\n",
"85.757153962 276.020525833\n",
"X Y is :\n",
"4864935.90416 -7646.24081353\n",
"Distance to Line01, Distance to Line21:\n",
"59.2991691236 250.298055281\n",
"X Y is :\n",
"4864901.49822 -7548.8706411\n",
"Distance to Line01, Distance to Line21:\n",
"-42.6711883316 149.06469\n",
"X Y is :\n",
"4864979.69806 -7605.78592107\n",
"Distance to Line01, Distance to Line21:\n",
"44.7048252663 238.033527524\n",
"X Y is :\n",
"4864932.76395 -7679.14362533\n",
"Distance to Line01, Distance to Line21:\n",
"86.6966930108 276.932124056\n",
"X Y is :\n",
"4865002.86923 -7639.20842555\n",
"Distance to Line01, Distance to Line21:\n",
"85.1380953113 278.60961162\n",
"X Y is :\n",
"4865005.92505 -7639.39999998\n",
"Distance to Line01, Distance to Line21:\n",
"86.7673220933 280.341484517\n",
"X Y is :\n",
"4864979.72641 -7605.74185402\n",
"Distance to Line01, Distance to Line21:\n",
"44.6796759897 238.010241948\n",
"X Y is :\n",
"4864868.83411 -7563.0376879\n",
"Distance to Line01, Distance to Line21:\n",
"-45.8446293861 144.471721206\n",
"X Y is :\n",
"4864933.81362 -7675.88324814\n",
"Distance to Line01, Distance to Line21:\n",
"84.3349175913 274.671727464\n",
"X Y is :\n",
"4864979.13996 -7606.02041264\n",
"Distance to Line01, Distance to Line21:\n",
"44.6439597716 237.948558517\n",
"X Y is :\n",
"4865003.56221 -7639.37882148\n",
"Distance to Line01, Distance to Line21:\n",
"85.6190644328 279.111334584\n",
"X Y is :\n",
"4864954.84803 -7640.49564343\n",
"Distance to Line01, Distance to Line21:\n",
"63.3100657653 255.083097867\n",
"X Y is :\n",
"4864933.04646 -7661.83719915\n",
"Distance to Line01, Distance to Line21:\n",
"71.631367492 262.220667128\n",
"X Y is :\n",
"4864981.61846 -7599.60075824\n",
"Distance to Line01, Distance to Line21:\n",
"40.1904705305 233.709025186\n",
"X Y is :\n",
"4864918.09641 -7644.26442534\n",
"Distance to Line01, Distance to Line21:\n",
"49.0495255161 239.467337563\n",
"X Y is :\n",
"4865003.51703 -7639.2389411\n",
"Distance to Line01, Distance to Line21:\n",
"85.4746091277 278.968086211\n",
"X Y is :\n",
"4864981.58968 -7599.51360232\n",
"Distance to Line01, Distance to Line21:\n",
"40.1001623588 233.619447037\n",
"X Y is :\n",
"4864981.76288 -7599.89719782\n",
"Distance to Line01, Distance to Line21:\n",
"40.5198858219 234.037579044\n",
"X Y is :\n",
"4864934.25486 -7676.39066749\n",
"Distance to Line01, Distance to Line21:\n",
"84.9915387193 275.333632862\n",
"X Y is :\n",
"4865005.99432 -7639.4224574\n",
"Distance to Line01, Distance to Line21:\n",
"86.8201656029 280.396294843\n",
"X Y is :\n",
"4864980.74059 -7621.00058562\n",
"Distance to Line01, Distance to Line21:\n",
"58.5664338051 251.629008878\n",
"X Y is :\n",
"4864935.63089 -7673.32172399\n",
"Distance to Line01, Distance to Line21:\n",
"82.9539298139 273.404966496\n",
"X Y is :\n",
"4864862.22099 -7504.95884118\n",
"Distance to Line01, Distance to Line21:\n",
"-100.017499422 91.2229962564\n",
"X Y is :\n",
"4865005.1724 -7639.48674449\n",
"Distance to Line01, Distance to Line21:\n",
"86.4836749103 280.029893278\n",
"X Y is :\n",
"4864981.49332 -7600.30334479\n",
"Distance to Line01, Distance to Line21:\n",
"40.7477339744 234.247963045\n",
"X Y is :\n",
"4864981.76348 -7599.86682705\n",
"Distance to Line01, Distance to Line21:\n",
"40.4934969057 234.011814695\n",
"X Y is :\n",
"4864908.603 -7638.77676456\n",
"Distance to Line01, Distance to Line21:\n",
"39.69092815 229.887108643\n",
"X Y is :\n",
"4864933.73679 -7676.14297785\n",
"Distance to Line01, Distance to Line21:\n",
"84.5263087301 274.855279056\n",
"X Y is :\n",
"4864984.9219 -7607.37372304\n",
"Distance to Line01, Distance to Line21:\n",
"48.5968887303 242.076008727\n",
"X Y is :\n",
"4864933.82166 -7675.92835421\n",
"Distance to Line01, Distance to Line21:\n",
"84.3783792124 274.714572577\n",
"X Y is :\n",
"4864909.22848 -7639.24970015\n",
"Distance to Line01, Distance to Line21:\n",
"40.4053507342 230.613919647\n",
"X Y is :\n",
"4864981.52104 -7600.55070577\n",
"Distance to Line01, Distance to Line21:\n",
"40.9782455825 234.474523104\n",
"X Y is :\n",
"4864939.21208 -7529.23747849\n",
"Distance to Line01, Distance to Line21:\n",
"-41.8844373432 151.555543359\n",
"X Y is :\n",
"4864934.18751 -7674.38661462\n",
"Distance to Line01, Distance to Line21:\n",
"83.1991656846 273.578751595\n",
"X Y is :\n",
"4864988.19449 -7625.79956929\n",
"Distance to Line01, Distance to Line21:\n",
"66.3450837347 259.571930616\n",
"X Y is :\n",
"4864902.70763 -7548.61080435\n",
"Distance to Line01, Distance to Line21:\n",
"-42.3211943561 149.461980937\n",
"X Y is :\n",
"4864933.80337 -7533.22088177\n",
"Distance to Line01, Distance to Line21:\n",
"-40.9716459479 152.200729187\n",
"X Y is :\n",
"4864982.45916 -7603.8514772\n",
"Distance to Line01, Distance to Line21:\n",
"44.3258522602 237.789196143\n",
"X Y is :\n",
"4864930.21229 -7659.74871228\n",
"Distance to Line01, Distance to Line21:\n",
"68.4420346079 258.974117561\n",
"X Y is :\n",
"4864930.79532 -7662.47622634\n",
"Distance to Line01, Distance to Line21:\n",
"71.1163754722 261.614549997\n",
"X Y is :\n",
"4864932.99817 -7660.9297463\n",
"Distance to Line01, Distance to Line21:\n",
"70.8112561003 261.416912322\n",
"X Y is :\n",
"4865003.00397 -7637.31230535\n",
"Distance to Line01, Distance to Line21:\n",
"83.5371345682 277.051036954\n",
"X Y is :\n",
"4864871.96533 -7561.8424408\n",
"Distance to Line01, Distance to Line21:\n",
"-45.397410989 145.051780519\n",
"X Y is :\n",
"4864981.662 -7603.27186009\n",
"Distance to Line01, Distance to Line21:\n",
"43.4356501262 236.882745428\n",
"X Y is :\n",
"4864981.74327 -7605.0510424\n",
"Distance to Line01, Distance to Line21:\n",
"45.0371798389 238.451738947\n",
"X Y is :\n",
"4864981.96119 -7597.34190508\n",
"Distance to Line01, Distance to Line21:\n",
"38.3703592885 231.945756487\n",
"X Y is :\n",
"4864924.93498 -7650.24062494\n",
"Distance to Line01, Distance to Line21:\n",
"57.5679494143 248.105195858\n",
"X Y is :\n",
"4864870.00375 -7562.77070454\n",
"Distance to Line01, Distance to Line21:\n",
"-45.5199253719 144.842478848\n",
"X Y is :\n",
"4865005.95791 -7639.44235313\n",
"Distance to Line01, Distance to Line21:\n",
"86.8202352755 280.394700794\n",
"X Y is :\n",
"4864933.41857 -7533.06648015\n",
"Distance to Line01, Distance to Line21:\n",
"-41.2912310671 151.870808035\n",
"X Y is :\n",
"4864978.33417 -7591.804296\n",
"Distance to Line01, Distance to Line21:\n",
"31.7725722016 225.331695908\n",
"X Y is :\n",
"4864919.43947 -7645.85121551\n",
"Distance to Line01, Distance to Line21:\n",
"51.0853241575 241.518380665\n",
"X Y is :\n",
"4864981.46468 -7616.47685971\n",
"Distance to Line01, Distance to Line21:\n",
"54.9393861168 248.117111175\n",
"X Y is :\n",
"4864933.72773 -7533.25211793\n",
"Distance to Line01, Distance to Line21:\n",
"-40.9803736622 152.188745519\n",
"X Y is :\n",
"4864879.50276 -7425.48638021\n",
"Distance to Line01, Distance to Line21:\n",
"-161.556593217 31.8657390204\n",
"X Y is :\n",
"4864869.47052 -7562.81767108\n",
"Distance to Line01, Distance to Line21:\n",
"-45.7336068632 144.60928787\n",
"X Y is :\n",
"4864947.90071 -7645.06255322\n",
"Distance to Line01, Distance to Line21:\n",
"63.9997601558 255.43998765\n",
"X Y is :\n",
"4864936.02519 -7672.71705169\n",
"Distance to Line01, Distance to Line21:\n",
"82.6113523095 273.088145056\n",
"X Y is :\n",
"4865005.82046 -7639.35342283\n",
"Distance to Line01, Distance to Line21:\n",
"86.6764125831 280.247857578\n",
"X Y is :\n",
"4864934.02237 -7674.79292234\n",
"Distance to Line01, Distance to Line21:\n",
"83.4770745025 273.842830487\n",
"X Y is :\n",
"4864909.62766 -7639.34796976\n",
"Distance to Line01, Distance to Line21:\n",
"40.6825060651 230.90302753\n",
"X Y is :\n",
"4864948.15877 -7644.72803186\n",
"Distance to Line01, Distance to Line21:\n",
"63.8293218325 255.285188932\n",
"X Y is :\n",
"4864929.64361 -7651.84893865\n",
"Distance to Line01, Distance to Line21:\n",
"61.2317083481 251.90101648\n",
"X Y is :\n",
"4864997.27577 -7634.15682407\n",
"Distance to Line01, Distance to Line21:\n",
"78.0270326549 271.404110289\n",
"X Y is :\n",
"4865000.91348 -7636.65191956\n",
"Distance to Line01, Distance to Line21:\n",
"81.9576610706 275.411865247\n",
"X Y is :\n",
"4864977.66133 -7593.2965764\n",
"Distance to Line01, Distance to Line21:\n",
"32.7615751895 226.267595014\n",
"X Y is :\n",
"4864908.58767 -7638.96324917\n",
"Distance to Line01, Distance to Line21:\n",
"39.8473907873 230.039330238\n",
"X Y is :\n",
"4864923.20987 -7647.11696082\n",
"Distance to Line01, Distance to Line21:\n",
"53.9996419933 244.53888528\n",
"X Y is :\n",
"4864981.70838 -7599.9927367\n",
"Distance to Line01, Distance to Line21:\n",
"40.5777431476 234.091638652\n",
"X Y is :\n",
"4864908.62065 -7638.8626953\n",
"Distance to Line01, Distance to Line21:\n",
"39.7748399992 229.969927161\n",
"X Y is :\n",
"4864982.1372 -7622.78964319\n",
"Distance to Line01, Distance to Line21:\n",
"60.8054891346 253.881153492\n",
"X Y is :\n",
"4865005.79917 -7639.33677355\n",
"Distance to Line01, Distance to Line21:\n",
"86.6516111708 280.222645487\n",
"X Y is :\n",
"4864928.65619 -7659.19126256\n",
"Distance to Line01, Distance to Line21:\n",
"67.2084617066 257.697416768\n",
"X Y is :\n",
"4864981.76703 -7599.73126765\n",
"Distance to Line01, Distance to Line21:\n",
"40.3761312811 233.897267482\n",
"X Y is :\n",
"4864934.9474 -7674.99393928\n",
"Distance to Line01, Distance to Line21:\n",
"84.0958814526 274.489866533\n",
"X Y is :\n",
"4864892.01645 -7422.3625651\n",
"Distance to Line01, Distance to Line21:\n",
"-158.317561593 35.6028020805\n",
"X Y is :\n",
"4864932.49365 -7679.0710834\n",
"Distance to Line01, Distance to Line21:\n",
"86.503751228 276.731208039\n",
"X Y is :\n",
"4864932.35105 -7673.87744394\n",
"Distance to Line01, Distance to Line21:\n",
"81.8739539208 272.199685093\n",
"X Y is :\n",
"4864909.41406 -7638.97962195\n",
"Distance to Line01, Distance to Line21:\n",
"40.2568640681 230.477266797\n",
"X Y is :\n",
"4864986.15705 -7615.62384426\n",
"Distance to Line01, Distance to Line21:\n",
"56.4335637633 249.791711776\n",
"X Y is :\n",
"4864981.6966 -7599.76370033\n",
"Distance to Line01, Distance to Line21:\n",
"40.3709454079 233.888983373\n",
"X Y is :\n",
"4864921.88554 -7533.20952115\n",
"Distance to Line01, Distance to Line21:\n",
"-46.679457719 146.077966275\n",
"X Y is :\n",
"4865003.4777 -7639.69163399\n",
"Distance to Line01, Distance to Line21:\n",
"85.8534055994 279.336513352\n",
"X Y is :\n",
"4864975.61503 -7619.42734265\n",
"Distance to Line01, Distance to Line21:\n",
"54.7341445425 247.6494362\n",
"X Y is :\n",
"4864928.16234 -7653.88284249\n",
"Distance to Line01, Distance to Line21:\n",
"62.3099227003 252.887197533\n",
"X Y is :\n",
"4864909.17919 -7637.89007002\n",
"Distance to Line01, Distance to Line21:\n",
"39.1876108953 229.42149027\n",
"X Y is :\n",
"4864965.69341 -7638.59800338\n",
"Distance to Line01, Distance to Line21:\n",
"66.8284544527 259.017025395\n",
"X Y is :\n",
"4864934.12107 -7675.11109529\n",
"Distance to Line01, Distance to Line21:\n",
"83.8037148557 274.166584273\n",
"X Y is :\n",
"4864976.38395 -7590.37606569\n",
"Distance to Line01, Distance to Line21:\n",
"29.5857566037 223.105332324\n",
"X Y is :\n",
"4864931.81923 -7668.44153482\n",
"Distance to Line01, Distance to Line21:\n",
"76.8452861893 267.260548632\n",
"X Y is :\n",
"4864928.44961 -7648.25886375\n",
"Distance to Line01, Distance to Line21:\n",
"57.5076705029 248.206749304\n",
"X Y is :\n",
"4864956.88845 -7639.09989024\n",
"Distance to Line01, Distance to Line21:\n",
"63.0596758158 254.931534965\n",
"X Y is :\n",
"4864932.20495 -7672.74123548\n",
"Distance to Line01, Distance to Line21:\n",
"80.8061632176 271.14939102\n",
"X Y is :\n",
"4864908.80443 -7634.24727939\n",
"Distance to Line01, Distance to Line21:\n",
"35.8089429 226.102180229\n",
"X Y is :\n",
"4864886.37029 -7485.14791305\n",
"Distance to Line01, Distance to Line21:\n",
"-105.872004595 86.6035837608\n",
"X Y is :\n",
"4864932.82896 -7678.79772389\n",
"Distance to Line01, Distance to Line21:\n",
"86.4239684543 276.66854047\n",
"X Y is :\n",
"4864909.03554 -7638.16776493\n",
"Distance to Line01, Distance to Line21:\n",
"39.3628340804 229.586188948\n",
"X Y is :\n",
"4864916.67166 -7642.94702067\n",
"Distance to Line01, Distance to Line21:\n",
"47.211271612 237.605638138\n",
"X Y is :\n",
"4864908.92948 -7638.15507385\n",
"Distance to Line01, Distance to Line21:\n",
"39.3009781469 229.520890328\n",
"X Y is :\n",
"4865003.44833 -7639.57988208\n",
"Distance to Line01, Distance to Line21:\n",
"85.7412150686 279.225521413\n",
"X Y is :\n",
"4864967.58272 -7572.81390821\n",
"Distance to Line01, Distance to Line21:\n",
"9.95294787314 203.515029083\n",
"X Y is :\n",
"4864932.76029 -7679.40147915\n",
"Distance to Line01, Distance to Line21:\n",
"86.9214224483 277.151600513\n",
"X Y is :\n",
"4864929.99254 -7647.23227202\n",
"Distance to Line01, Distance to Line21:\n",
"57.3436686029 248.116904945\n",
"X Y is :\n",
"4864907.60858 -7631.76185421\n",
"Distance to Line01, Distance to Line21:\n",
"33.0542426541 223.355227221\n",
"X Y is :\n",
"4864912.78656 -7641.02534797\n",
"Distance to Line01, Distance to Line21:\n",
"43.6660128452 233.96323597\n",
"X Y is :\n",
"4864932.73806 -7679.25052412\n",
"Distance to Line01, Distance to Line21:\n",
"86.7782075967 277.010611891\n",
"X Y is :\n",
"4864911.7363 -7639.52539611\n",
"Distance to Line01, Distance to Line21:\n",
"41.8464694545 232.136921965\n",
"X Y is :\n",
"4865003.39518 -7639.50725305\n",
"Distance to Line01, Distance to Line21:\n",
"85.6520140558 279.135912623\n",
"X Y is :\n",
"4864909.51558 -7639.38890753\n",
"Distance to Line01, Distance to Line21:\n",
"40.6648776208 230.880680829\n",
"X Y is :\n",
"4864932.73599 -7679.3453024\n",
"Distance to Line01, Distance to Line21:\n",
"86.8604630166 277.090911175\n",
"X Y is :\n",
"4864888.1075 -7483.53345313\n",
"Distance to Line01, Distance to Line21:\n",
"-106.459448666 86.1087515471\n",
"X Y is :\n",
"4864865.65694 -7502.54730614\n",
"Distance to Line01, Distance to Line21:\n",
"-100.492868418 90.9152620022\n",
"X Y is :\n",
"4864908.98421 -7638.8582146\n",
"Distance to Line01, Distance to Line21:\n",
"39.9447215078 230.152563043\n",
"X Y is :\n",
"4864932.73934 -7679.44339097\n",
"Distance to Line01, Distance to Line21:\n",
"86.9482172822 277.176832325\n",
"X Y is :\n",
"4864909.16119 -7638.71940913\n",
"Distance to Line01, Distance to Line21:\n",
"39.907420866 230.124187079\n",
"X Y is :\n",
"4864932.84397 -7679.2139546\n",
"Distance to Line01, Distance to Line21:\n",
"86.7967254046 277.033546363\n",
"X Y is :\n",
"4865006.05494 -7639.44104186\n",
"Distance to Line01, Distance to Line21:\n",
"86.8654728856 280.443344662\n",
"X Y is :\n",
"4864909.28978 -7638.7352699\n",
"Distance to Line01, Distance to Line21:\n",
"39.9828263241 230.203756656\n",
"X Y is :\n",
"4864932.796 -7679.37291169\n",
"Distance to Line01, Distance to Line21:\n",
"86.9134031687 277.145393061\n",
"X Y is :\n",
"4864911.65294 -7639.00500151\n",
"Distance to Line01, Distance to Line21:\n",
"41.3495465391 231.647439639\n",
"X Y is :\n",
"4864956.62834 -7637.3237567\n",
"Distance to Line01, Distance to Line21:\n",
"61.3753218814 253.273426452\n",
"X Y is :\n",
"4864981.61853 -7603.30690366\n",
"Distance to Line01, Distance to Line21:\n",
"43.4456451818 236.890529423\n",
"X Y is :\n",
"4864862.46609 -7505.15914073\n",
"Distance to Line01, Distance to Line21:\n",
"-99.7243915093 91.5206611303\n",
"X Y is :\n",
"4864932.72988 -7679.27974306\n",
"Distance to Line01, Distance to Line21:\n",
"86.7999589496 277.031497369\n",
"X Y is :\n",
"4864887.59366 -7484.31786904\n",
"Distance to Line01, Distance to Line21:\n",
"-106.016155909 86.5185505389\n",
"X Y is :\n",
"4865005.10508 -7639.80042975\n",
"Distance to Line01, Distance to Line21:\n",
"86.7270047669 280.264642501\n",
"X Y is :\n",
"4864981.48633 -7609.58311032\n",
"Distance to Line01, Distance to Line21:\n",
"48.8948925062 242.210409504\n",
"X Y is :\n",
"4864964.47452 -7636.61302331\n",
"Distance to Line01, Distance to Line21:\n",
"64.5022834682 256.687850812\n",
"X Y is :\n",
"4864862.10301 -7505.24986446\n",
"Distance to Line01, Distance to Line21:\n",
"-99.8182944381 91.4123062387\n",
"X Y is :\n",
"4864909.81409 -7638.86673209\n",
"Distance to Line01, Distance to Line21:\n",
"40.3489618283 230.585544219\n",
"X Y is :\n",
"4864935.67511 -7647.84258374\n",
"Distance to Line01, Distance to Line21:\n",
"60.596511907 251.555577893\n",
"X Y is :\n",
"4864981.46532 -7611.6515434\n",
"Distance to Line01, Distance to Line21:\n",
"50.7015710782 243.975238659\n",
"X Y is :\n",
"4864916.46754 -7645.88915467\n",
"Distance to Line01, Distance to Line21:\n",
"49.6977893173 240.026559813\n",
"X Y is :\n",
"4864960.76402 -7632.17034043\n",
"Distance to Line01, Distance to Line21:\n",
"58.8262716045 250.970891937\n",
"X Y is :\n",
"4864936.96794 -7651.63619367\n",
"Distance to Line01, Distance to Line21:\n",
"64.5465635275 255.475255557\n",
"X Y is :\n",
"4864909.21261 -7638.68958058\n",
"Distance to Line01, Distance to Line21:\n",
"39.9058047022 230.124955088\n",
"X Y is :\n",
"4864886.88484 -7484.30013\n",
"Distance to Line01, Distance to Line21:\n",
"-106.370618544 86.1397476164\n",
"X Y is :\n",
"4864860.81356 -7505.51986639\n",
"Distance to Line01, Distance to Line21:\n",
"-100.197627535 90.9826857357\n",
"X Y is :\n",
"4864918.0667 -7642.66341041\n",
"Distance to Line01, Distance to Line21:\n",
"47.6291356222 238.077738568\n",
"X Y is :\n",
"4864828.54175 -7457.98332545\n",
"Distance to Line01, Distance to Line21:\n",
"-157.378338192 33.6226922386\n",
"X Y is :\n",
"4864980.76111 -7619.90128845\n",
"Distance to Line01, Distance to Line21:\n",
"57.6107222984 250.695864721\n",
"X Y is :\n",
"4865005.14105 -7639.04505572\n",
"Distance to Line01, Distance to Line21:\n",
"86.0807484689 279.634654923\n",
"X Y is :\n",
"4864940.20108 -7659.66577819\n",
"Distance to Line01, Distance to Line21:\n",
"73.1447641369 264.026471329\n",
"X Y is :\n",
"4864927.58347 -7648.41737745\n",
"Distance to Line01, Distance to Line21:\n",
"57.2328002599 247.898554743\n",
"X Y is :\n",
"4864948.26258 -7644.64477136\n",
"Distance to Line01, Distance to Line21:\n",
"63.8058228687 255.266961358\n",
"X Y is :\n",
"4864862.64048 -7505.13661943\n",
"Distance to Line01, Distance to Line21:\n",
"-99.6607975231 91.5907779643\n",
"X Y is :\n",
"4864956.67843 -7642.88915707\n",
"Distance to Line01, Distance to Line21:\n",
"66.2874120737 258.076629496\n",
"X Y is :\n",
"4864818.91608 -7464.64824046\n",
"Distance to Line01, Distance to Line21:\n",
"-156.126446342 34.4067695745\n",
"X Y is :\n",
"4864933.72018 -7677.26929789\n",
"Distance to Line01, Distance to Line21:\n",
"85.5076212267 275.813623035\n",
"X Y is :\n",
"4864981.96733 -7622.517395\n",
"Distance to Line01, Distance to Line21:\n",
"60.485157712 253.5603163\n",
"X Y is :\n",
"4864982.36482 -7613.76801134\n",
"Distance to Line01, Distance to Line21:\n",
"52.9905298381 246.253460682\n",
"X Y is :\n",
"4864931.23613 -7652.38490474\n",
"Distance to Line01, Distance to Line21:\n",
"62.4638242508 253.177956096\n",
"X Y is :\n",
"4864959.42087 -7633.86160577\n",
"Distance to Line01, Distance to Line21:\n",
"59.6695716521 251.733781043\n",
"X Y is :\n",
"4864853.52548 -7507.31192745\n",
"Distance to Line01, Distance to Line21:\n",
"-102.108023013 88.7827747356\n",
"X Y is :\n",
"4864981.99994 -7597.78349151\n",
"Distance to Line01, Distance to Line21:\n",
"38.776732368 232.344701206\n",
"X Y is :\n",
"4864933.04342 -7678.40867897\n",
"Distance to Line01, Distance to Line21:\n",
"86.1847977522 276.444574421\n",
"X Y is :\n",
"4864820.32981 -7462.12113786\n",
"Distance to Line01, Distance to Line21:\n",
"-157.670128321 32.9625723849\n",
"X Y is :\n",
"4864998.31919 -7635.27106091\n",
"Distance to Line01, Distance to Line21:\n",
"79.5045296988 272.895807185\n",
"X Y is :\n",
"4864817.82488 -7463.99423241\n",
"Distance to Line01, Distance to Line21:\n",
"-157.222562018 33.2856409773\n",
"X Y is :\n",
"4864851.54979 -7502.6604926\n",
"Distance to Line01, Distance to Line21:\n",
"-107.137988871 83.7764460353\n",
"X Y is :\n",
"4864981.93532 -7597.23620508\n",
"Distance to Line01, Distance to Line21:\n",
"38.2651516074 231.841748591\n",
"X Y is :\n",
"4865001.53367 -7638.08133389\n",
"Distance to Line01, Distance to Line21:\n",
"83.5096412849 276.957036373\n",
"X Y is :\n",
"4864932.45711 -7673.92962503\n",
"Distance to Line01, Distance to Line21:\n",
"81.97049424 272.298883091\n",
"X Y is :\n",
"4864877.01107 -7495.81821598\n",
"Distance to Line01, Distance to Line21:\n",
"-100.974760163 90.9626742455\n",
"X Y is :\n",
"4864932.89048 -7678.82607915\n",
"Distance to Line01, Distance to Line21:\n",
"86.4782848898 276.724436354\n",
"X Y is :\n",
"4864977.64424 -7590.04283265\n",
"Distance to Line01, Distance to Line21:\n",
"29.895609529 223.465713581\n",
"X Y is :\n",
"4864829.52985 -7456.87670868\n",
"Distance to Line01, Distance to Line21:\n",
"-157.877884511 33.1795660404\n",
"X Y is :\n",
"4865003.55514 -7639.34621509\n",
"Distance to Line01, Distance to Line21:\n",
"85.5870472855 279.079719416\n",
"X Y is :\n",
"4864934.17341 -7673.4351219\n",
"Distance to Line01, Distance to Line21:\n",
"82.3567181039 272.754726999\n",
"X Y is :\n",
"4864939.38952 -7649.47408448\n",
"Distance to Line01, Distance to Line21:\n",
"63.8053051892 254.861336582\n",
"X Y is :\n",
"4864934.11884 -7674.44353932\n",
"Distance to Line01, Distance to Line21:\n",
"83.2163305233 273.592392477\n",
"X Y is :\n",
"4865002.3645 -7638.71521435\n",
"Distance to Line01, Distance to Line21:\n",
"84.4635972659 277.927334947\n",
"X Y is :\n",
"4864888.58499 -7483.46633012\n",
"Distance to Line01, Distance to Line21:\n",
"-106.290122399 86.2960459929\n",
"X Y is :\n",
"4864933.93821 -7675.18048669\n",
"Distance to Line01, Distance to Line21:\n",
"83.7772404151 274.132360395\n",
"X Y is :\n",
"4864932.8025 -7679.27719504\n",
"Distance to Line01, Distance to Line21:\n",
"86.8324405553 277.066559493\n",
"X Y is :\n",
"4864932.45855 -7679.15236057\n",
"Distance to Line01, Distance to Line21:\n",
"86.5583576063 276.78297605\n",
"X Y is :\n",
"4864933.8116 -7532.96869159\n",
"Distance to Line01, Distance to Line21:\n",
"-41.1892117719 151.988463276\n",
"X Y is :\n",
"4864934.0696 -7674.83017546\n",
"Distance to Line01, Distance to Line21:\n",
"83.5323736133 273.899034321\n",
"X Y is :\n",
"4865003.79246 -7639.47260593\n",
"Distance to Line01, Distance to Line21:\n",
"85.811516827 279.309943789\n",
"X Y is :\n",
"4864956.67843 -7642.88915707\n",
"Distance to Line01, Distance to Line21:\n",
"66.2874120737 258.076629496\n",
"X Y is :\n",
"4864932.80311 -7679.30125125\n",
"Distance to Line01, Distance to Line21:\n",
"86.8538599543 277.087521864\n",
"X Y is :\n",
"4864980.23866 -7622.20407542\n",
"Distance to Line01, Distance to Line21:\n",
"59.3835015361 252.404667487\n",
"X Y is :\n",
"4864888.48213 -7483.26615775\n",
"Distance to Line01, Distance to Line21:\n",
"-106.515109455 86.0714549866\n",
"X Y is :\n",
"4864980.54787 -7609.29113472\n",
"Distance to Line01, Distance to Line21:\n",
"48.1897755559 241.478403774\n",
"X Y is :\n",
"4864862.59547 -7419.95850372\n",
"Distance to Line01, Distance to Line21:\n",
"-174.495034547 18.4481912692\n",
"X Y is :\n",
"4864933.91504 -7677.52493097\n",
"Distance to Line01, Distance to Line21:\n",
"85.8253077105 276.133016193\n",
"X Y is :\n",
"4864937.56158 -7531.24934957\n",
"Distance to Line01, Distance to Line21:\n",
"-40.9064862082 152.436003487\n",
"X Y is :\n",
"4864933.76971 -7677.28394135\n",
"Distance to Line01, Distance to Line21:\n",
"85.5441630036 275.851599203\n",
"X Y is :\n",
"4864933.29332 -7659.63798013\n",
"Distance to Line01, Distance to Line21:\n",
"69.8177983616 260.45941529\n",
"X Y is :\n",
"4864979.84004 -7605.54469126\n",
"Distance to Line01, Distance to Line21:\n",
"44.5608349503 237.89927893\n",
"X Y is :\n",
"4864933.33995 -7678.29167332\n",
"Distance to Line01, Distance to Line21:\n",
"86.2238003329 276.496233063\n",
"X Y is :\n",
"4865003.5916 -7639.27031324\n",
"Distance to Line01, Distance to Line21:\n",
"85.5378111887 279.03326213\n",
"X Y is :\n",
"4864998.951 -7636.28249792\n",
"Distance to Line01, Distance to Line21:\n",
"80.6949466493 274.088128242\n",
"X Y is :\n",
"4864909.84739 -7639.87677682\n",
"Distance to Line01, Distance to Line21:\n",
"41.2520115876 231.469675636\n",
"X Y is :\n",
"4864932.27751 -7678.41012833\n",
"Distance to Line01, Distance to Line21:\n",
"85.8198925254 276.052958529\n",
"X Y is :\n",
"4865001.02255 -7635.45107755\n",
"Distance to Line01, Distance to Line21:\n",
"80.9550968182 274.436971683\n",
"X Y is :\n",
"4864868.26753 -7488.81460981\n",
"Distance to Line01, Distance to Line21:\n",
"-111.30631449 80.465746407\n",
"X Y is :\n",
"4865003.57543 -7639.39951213\n",
"Distance to Line01, Distance to Line21:\n",
"85.6435597565 279.135879304\n",
"X Y is :\n",
"4864832.00633 -7455.24441578\n",
"Distance to Line01, Distance to Line21:\n",
"-158.127553862 33.0486165387\n",
"X Y is :\n",
"4864908.52973 -7638.95924467\n",
"Distance to Line01, Distance to Line21:\n",
"39.8161736563 230.006174333\n",
"X Y is :\n",
"4864964.13966 -7636.42105411\n",
"Distance to Line01, Distance to Line21:\n",
"64.1735832154 256.351301409\n",
"X Y is :\n",
"4865003.68271 -7639.45965492\n",
"Distance to Line01, Distance to Line21:\n",
"85.7476742384 279.242535556\n",
"X Y is :\n",
"4864934.70099 -7653.22123421\n",
"Distance to Line01, Distance to Line21:\n",
"64.854906979 255.673117889\n",
"X Y is :\n",
"4864996.49932 -7635.85620158\n",
"Distance to Line01, Distance to Line21:\n",
"79.1483988092 272.464646572\n",
"X Y is :\n",
"4864982.34126 -7598.89320232\n",
"Distance to Line01, Distance to Line21:\n",
"39.9145830316 233.472382761\n",
"X Y is :\n",
"4864870.39079 -7431.88668911\n",
"Distance to Line01, Distance to Line21:\n",
"-160.291511695 32.686161529\n",
"X Y is :\n",
"4864951.71549 -7643.7167034\n",
"Distance to Line01, Distance to Line21:\n",
"64.6415077299 256.241382794\n",
"X Y is :\n",
"4865003.08262 -7639.24939061\n",
"Distance to Line01, Distance to Line21:\n",
"85.2760942818 278.754229954\n",
"X Y is :\n",
"4864934.04648 -7675.35785885\n",
"Distance to Line01, Distance to Line21:\n",
"83.9847916328 274.340157506\n",
"X Y is :\n",
"4864943.27474 -7525.94167921\n",
"Distance to Line01, Distance to Line21:\n",
"-42.8368379792 150.81018782\n",
"X Y is :\n",
"4864963.0039 -7641.41378596\n",
"Distance to Line01, Distance to Line21:\n",
"68.0157449963 260.054648742\n",
"X Y is :\n",
"4864934.70099 -7653.22123421\n",
"Distance to Line01, Distance to Line21:\n",
"64.854906979 255.673117889\n",
"X Y is :\n",
"4864982.06275 -7597.46509087\n",
"Distance to Line01, Distance to Line21:\n",
"38.5271078993 232.103594222\n",
"X Y is :\n",
"4864867.62695 -7430.6890963\n",
"Distance to Line01, Distance to Line21:\n",
"-162.664742043 30.2404547097\n",
"X Y is :\n",
"4864933.737 -7674.74420625\n",
"Distance to Line01, Distance to Line21:\n",
"83.2978526944 273.654635716\n",
"X Y is :\n",
"4864885.64031 -7423.20531923\n",
"Distance to Line01, Distance to Line21:\n",
"-160.625751022 33.0557368\n",
"X Y is :\n",
"4864947.96721 -7643.83985523\n",
"Distance to Line01, Distance to Line21:\n",
"62.9576466692 254.424496286\n",
"X Y is :\n",
"4864934.07899 -7675.19242835\n",
"Distance to Line01, Distance to Line21:\n",
"83.8550339255 274.214820756\n",
"X Y is :\n",
"4864986.51966 -7620.74059478\n",
"Distance to Line01, Distance to Line21:\n",
"61.1010159544 254.37008259\n",
"X Y is :\n",
"4864990.89617 -7629.76920752\n",
"Distance to Line01, Distance to Line21:\n",
"71.1233055526 264.365358962\n",
"X Y is :\n",
"4864873.77161 -7425.13460043\n",
"Distance to Line01, Distance to Line21:\n",
"-164.60558667 28.6240846559\n",
"X Y is :\n",
"4864982.83341 -7610.07657524\n",
"Distance to Line01, Distance to Line21:\n",
"49.9723375949 243.32497298\n",
"X Y is :\n",
"4864981.97081 -7597.7241642\n",
"Distance to Line01, Distance to Line21:\n",
"38.7106971685 232.278830512\n",
"X Y is :\n",
"4864906.36801 -7628.59822562\n",
"Distance to Line01, Distance to Line21:\n",
"29.6824902457 220.003145894\n",
"X Y is :\n",
"4864933.9272 -7653.63379426\n",
"Distance to Line01, Distance to Line21:\n",
"64.8473202516 255.630373958\n",
"X Y is :\n",
"4864933.72384 -7676.51111636\n",
"Distance to Line01, Distance to Line21:\n",
"84.8434558405 275.164656895\n",
"X Y is :\n",
"4864930.76103 -7662.79461381\n",
"Distance to Line01, Distance to Line21:\n",
"71.379624323 261.870275218\n",
"X Y is :\n",
"4864875.57238 -7424.73577454\n",
"Distance to Line01, Distance to Line21:\n",
"-164.094943373 29.2053887726\n",
"X Y is :\n",
"4864892.05553 -7421.95191869\n",
"Distance to Line01, Distance to Line21:\n",
"-158.659548362 35.2703400661\n",
"X Y is :\n",
"4864934.0659 -7675.02520693\n",
"Distance to Line01, Distance to Line21:\n",
"83.7019017298 274.064556534\n",
"X Y is :\n",
"4864934.5949 -7676.54116195\n",
"Distance to Line01, Distance to Line21:\n",
"85.2862942914 275.637242965\n",
"X Y is :\n",
"4864981.84777 -7600.18508896\n",
"Distance to Line01, Distance to Line21:\n",
"40.8133290753 234.328256753\n",
"X Y is :\n",
"4864981.53762 -7599.5627519\n",
"Distance to Line01, Distance to Line21:\n",
"40.1184409646 233.634934997\n",
"X Y is :\n",
"4864989.08304 -7627.2894328\n",
"Distance to Line01, Distance to Line21:\n",
"68.0784538127 261.306638406\n",
"X Y is :\n",
"4864906.86767 -7630.35537146\n",
"Distance to Line01, Distance to Line21:\n",
"31.4646944824 221.767827282\n",
"X Y is :\n",
"4864868.4831 -7563.21152526\n",
"Distance to Line01, Distance to Line21:\n",
"-45.8597603362 144.440906733\n",
"X Y is :\n",
"4864981.69658 -7599.85438659\n",
"Distance to Line01, Distance to Line21:\n",
"40.4505853599 233.966819839\n",
"X Y is :\n",
"4864868.08519 -7433.01709979\n",
"Distance to Line01, Distance to Line21:\n",
"-160.400955978 32.4739267975\n",
"X Y is :\n",
"4864924.44623 -7654.67129836\n",
"Distance to Line01, Distance to Line21:\n",
"61.2257796626 251.657924101\n",
"X Y is :\n",
"4864907.11341 -7629.84650126\n",
"Distance to Line01, Distance to Line21:\n",
"31.1352317206 221.457040586\n",
"X Y is :\n",
"4864981.32114 -7599.21212198\n",
"Distance to Line01, Distance to Line21:\n",
"39.70698433 233.222907127\n",
"X Y is :\n",
"4864981.62925 -7600.03626946\n",
"Distance to Line01, Distance to Line21:\n",
"40.5781450261 234.088418406\n",
"X Y is :\n",
"4864924.88301 -7648.60610321\n",
"Distance to Line01, Distance to Line21:\n",
"56.1074886745 246.675416682\n",
"X Y is :\n",
"4864871.53804 -7562.25404495\n",
"Distance to Line01, Distance to Line21:\n",
"-45.2401783724 145.185945797\n",
"X Y is :\n",
"4864934.43993 -7674.43798272\n",
"Distance to Line01, Distance to Line21:\n",
"83.3649594941 273.752317483\n",
"X Y is :\n",
"4864991.69798 -7635.50940822\n",
"Distance to Line01, Distance to Line21:\n",
"76.5483163251 269.704195168\n",
"X Y is :\n",
"4864932.97249 -7674.65521411\n",
"Distance to Line01, Distance to Line21:\n",
"82.8541866156 273.186105986\n",
"X Y is :\n",
"4864939.62438 -7649.81438086\n",
"Distance to Line01, Distance to Line21:\n",
"64.2164760335 255.273924587\n",
"X Y is :\n",
"4864882.51075 -7425.5794561\n",
"Distance to Line01, Distance to Line21:\n",
"-160.03674522 33.488524948\n",
"X Y is :\n",
"4864956.59714 -7637.32594754\n",
"Distance to Line01, Distance to Line21:\n",
"61.362328762 253.259302817\n",
"X Y is :\n",
"4864938.89129 -7528.81951714\n",
"Distance to Line01, Distance to Line21:\n",
"-42.4049062331 151.032207547\n",
"X Y is :\n",
"4864999.7254 -7635.25654798\n",
"Distance to Line01, Distance to Line21:\n",
"80.1640816704 273.604635215\n",
"X Y is :\n",
"4864932.53534 -7679.06917902\n",
"Distance to Line01, Distance to Line21:\n",
"86.5220112801 276.750958359\n",
"X Y is :\n",
"4864934.12441 -7675.27306695\n",
"Distance to Line01, Distance to Line21:\n",
"83.9475766504 274.307342935\n",
"X Y is :\n",
"4864982.64611 -7619.44385302\n",
"Distance to Line01, Distance to Line21:\n",
"58.1101587288 251.27006138\n",
"X Y is :\n",
"4864823.07279 -7452.19472028\n",
"Distance to Line01, Distance to Line21:\n",
"-165.077192679 25.8483870035\n",
"X Y is :\n",
"4864955.85429 -7639.11429335\n",
"Distance to Line01, Distance to Line21:\n",
"62.5778980663 254.413444021\n",
"X Y is :\n",
"4864829.53473 -7456.86734386\n",
"Distance to Line01, Distance to Line21:\n",
"-157.883776376 33.1740303561\n",
"X Y is :\n",
"4865005.07591 -7639.14149721\n",
"Distance to Line01, Distance to Line21:\n",
"86.134311507 279.684031628\n",
"X Y is :\n",
"4864936.88993 -7530.60193635\n",
"Distance to Line01, Distance to Line21:\n",
"-41.7962281002 151.5357331\n",
"X Y is :\n",
"4864917.24218 -7646.97488273\n",
"Distance to Line01, Distance to Line21:\n",
"51.0217414715 241.355914892\n",
"X Y is :\n",
"4864932.47164 -7679.10776667\n",
"Distance to Line01, Distance to Line21:\n",
"86.5254504157 276.751411464\n",
"X Y is :\n",
"4865005.94943 -7639.29516695\n",
"Distance to Line01, Distance to Line21:\n",
"86.6869036848 280.263999464\n",
"X Y is :\n",
"4864939.17543 -7527.85736709\n",
"Distance to Line01, Distance to Line21:\n",
"-43.1141266693 150.352011699\n",
"X Y is :\n",
"4865003.92644 -7637.97279102\n",
"Distance to Line01, Distance to Line21:\n",
"84.5582700685 278.091178564\n",
"X Y is :\n",
"4864823.9166 -7460.5797017\n",
"Distance to Line01, Distance to Line21:\n",
"-157.309168552 33.4791251474\n",
"X Y is :\n",
"4864955.25235 -7639.64784242\n",
"Distance to Line01, Distance to Line21:\n",
"62.7587367141 254.562707\n",
"X Y is :\n",
"4864938.59301 -7528.19115083\n",
"Distance to Line01, Distance to Line21:\n",
"-43.0994101776 150.339803666\n",
"X Y is :\n",
"4864890.5291 -7554.682816\n",
"Distance to Line01, Distance to Line21:\n",
"-42.810564777 148.427648692\n",
"X Y is :\n",
"4865005.93521 -7639.38110737\n",
"Distance to Line01, Distance to Line21:\n",
"86.7555881675 280.330480249\n",
"X Y is :\n",
"4865006.10045 -7639.42478328\n",
"Distance to Line01, Distance to Line21:\n",
"86.8729474646 280.452727606\n",
"X Y is :\n",
"4864818.55606 -7463.35029687\n",
"Distance to Line01, Distance to Line21:\n",
"-157.438568764 33.1079062613\n",
"X Y is :\n",
"4864829.52048 -7456.93434567\n",
"Distance to Line01, Distance to Line21:\n",
"-157.831743005 33.2242352511\n",
"X Y is :\n",
"4865006.00729 -7639.42848866\n",
"Distance to Line01, Distance to Line21:\n",
"86.8316631752 280.408124309\n",
"X Y is :\n",
"4864935.16594 -7532.12689664\n",
"Distance to Line01, Distance to Line21:\n",
"-41.2810660604 151.960523378\n",
"X Y is :\n",
"4864826.82294 -7463.28341151\n",
"Distance to Line01, Distance to Line21:\n",
"-153.54497643 37.2908183154\n",
"X Y is :\n",
"4864817.50061 -7465.93741187\n",
"Distance to Line01, Distance to Line21:\n",
"-155.670882247 34.7873965754\n",
"X Y is :\n",
"4864933.50504 -7532.27820174\n",
"Distance to Line01, Distance to Line21:\n",
"-41.9422403151 151.238481107\n",
"X Y is :\n",
"4864932.49082 -7678.93174584\n",
"Distance to Line01, Distance to Line21:\n",
"86.3800168875 276.61014495\n",
"X Y is :\n",
"4864829.07245 -7457.31775944\n",
"Distance to Line01, Distance to Line21:\n",
"-157.709187131 33.3235615695\n",
"X Y is :\n",
"4864940.47694 -7527.73367087\n",
"Distance to Line01, Distance to Line21:\n",
"-42.6005280641 150.913409352\n",
"X Y is :\n",
"4864947.87372 -7645.38349242\n",
"Distance to Line01, Distance to Line21:\n",
"64.2687401875 255.701647627\n",
"X Y is :\n",
"4864930.90746 -7533.9476467\n",
"Distance to Line01, Distance to Line21:\n",
"-41.7178362197 151.33920817\n",
"X Y is :\n",
"4864980.93697 -7609.39591079\n",
"Distance to Line01, Distance to Line21:\n",
"48.4678295717 241.767930081\n",
"X Y is :\n",
"4864861.87434 -7505.35913599\n",
"Distance to Line01, Distance to Line21:\n",
"-99.8316462397 91.3888161554\n",
"X Y is :\n",
"4864927.94941 -7650.04568371\n",
"Distance to Line01, Distance to Line21:\n",
"58.8379102783 249.484044514\n",
"X Y is :\n",
"4864902.80942 -7549.09009296\n",
"Distance to Line01, Distance to Line21:\n",
"-41.8515673776 149.925626244\n",
"X Y is :\n",
"4864854.72203 -7506.99454426\n",
"Distance to Line01, Distance to Line21:\n",
"-101.81472109 89.124069546\n",
"X Y is :\n",
"4864851.51687 -7506.44169505\n",
"Distance to Line01, Distance to Line21:\n",
"-103.8326586 87.0054649435\n",
"X Y is :\n",
"4864932.89066 -7533.53010933\n",
"Distance to Line01, Distance to Line21:\n",
"-41.1364074384 151.998025076\n",
"X Y is :\n",
"4864909.04003 -7639.17606527\n",
"Distance to Line01, Distance to Line21:\n",
"40.250579766 230.454047464\n",
"X Y is :\n",
"4864868.67266 -7563.19720718\n",
"Distance to Line01, Distance to Line21:\n",
"-45.781711895 144.525843194\n",
"X Y is :\n",
"4864908.64626 -7638.9439799\n",
"Distance to Line01, Distance to Line21:\n",
"39.8584781855 230.05284178\n",
"X Y is :\n",
"4864908.52432 -7638.95042348\n",
"Distance to Line01, Distance to Line21:\n",
"39.8058370428 229.995824431\n",
"X Y is :\n",
"4864887.49643 -7492.43260642\n",
"Distance to Line01, Distance to Line21:\n",
"-98.9353893338 93.4346209079\n",
"X Y is :\n",
"4864908.55264 -7638.92824365\n",
"Distance to Line01, Distance to Line21:\n",
"39.7998949648 229.991309762\n",
"X Y is :\n",
"4864826.79206 -7462.70672318\n",
"Distance to Line01, Distance to Line21:\n",
"-154.066247986 36.7799349268\n",
"X Y is :\n",
"4864863.52968 -7501.90736225\n",
"Distance to Line01, Distance to Line21:\n",
"-102.071966354 89.2747786114\n",
"X Y is :\n",
"4864922.37078 -7538.32475466\n",
"Distance to Line01, Distance to Line21:\n",
"-41.9547089461 150.717935871\n",
"X Y is :\n",
"4864863.77422 -7501.49116256\n",
"Distance to Line01, Distance to Line21:\n",
"-102.320605632 89.042931718\n",
"X Y is :\n",
"4864861.09837 -7505.34563253\n",
"Distance to Line01, Distance to Line21:\n",
"-100.214492622 90.9792060133\n",
"X Y is :\n",
"4864931.29506 -7534.45938687\n",
"Distance to Line01, Distance to Line21:\n",
"-41.0830613432 151.977313056\n",
"X Y is :\n",
"4864857.7385 -7506.2775362\n",
"Distance to Line01, Distance to Line21:\n",
"-101.002325746 90.0558013386\n",
"X Y is :\n",
"4864826.93611 -7455.58416222\n",
"Distance to Line01, Distance to Line21:\n",
"-160.253188996 30.7395983979\n",
"X Y is :\n",
"4864862.9157 -7503.02160487\n",
"Distance to Line01, Distance to Line21:\n",
"-101.38685482 89.9163517412\n",
"X Y is :\n",
"4864862.35571 -7505.19355289\n",
"Distance to Line01, Distance to Line21:\n",
"-99.7469417067 91.4935813995\n",
"X Y is :\n",
"4864938.01704 -7531.36852848\n",
"Distance to Line01, Distance to Line21:\n",
"-40.5840601698 152.771926947\n",
"X Y is :\n",
"4864938.40609 -7528.60714683\n",
"Distance to Line01, Distance to Line21:\n",
"-42.8234042176 150.60102842\n",
"X Y is :\n",
"4864866.30079 -7433.725986\n",
"Distance to Line01, Distance to Line21:\n",
"-160.631441242 32.167187642\n",
"X Y is :\n",
"4864852.29149 -7507.88565819\n",
"Distance to Line01, Distance to Line21:\n",
"-102.194076161 88.6423283178\n",
"X Y is :\n",
"4864905.07185 -7552.58158278\n",
"Distance to Line01, Distance to Line21:\n",
"-37.7033091761 154.083293958\n",
"X Y is :\n",
"4864934.29111 -7532.25623672\n",
"Distance to Line01, Distance to Line21:\n",
"-41.5857179413 151.622824119\n",
"X Y is :\n",
"4864844.70522 -7379.54645789\n",
"Distance to Line01, Distance to Line21:\n",
"-218.542510122 -25.4191868657\n",
"X Y is :\n",
"4864934.61231 -7531.96715022\n",
"Distance to Line01, Distance to Line21:\n",
"-41.686060137 151.539418187\n",
"X Y is :\n",
"4864869.07735 -7562.97508599\n",
"Distance to Line01, Distance to Line21:\n",
"-45.7833227606 144.54274586\n",
"X Y is :\n",
"4864936.68001 -7560.40966888\n",
"Distance to Line01, Distance to Line21:\n",
"-15.7161846199 177.015928913\n",
"X Y is :\n",
"4864935.28248 -7532.03538938\n",
"Distance to Line01, Distance to Line21:\n",
"-41.3057237161 151.941744398\n",
"X Y is :\n",
"4864869.88817 -7562.63535442\n",
"Distance to Line01, Distance to Line21:\n",
"-45.6940632134 144.667005112\n",
"X Y is :\n",
"4864870.11225 -7428.15744517\n",
"Distance to Line01, Distance to Line21:\n",
"-163.700111737 29.3419898837\n",
"X Y is :\n",
"4864869.25266 -7562.97744497\n",
"Distance to Line01, Distance to Line21:\n",
"-45.6974327691 144.634696427\n",
"X Y is :\n",
"4864865.01314 -7501.24749433\n",
"Distance to Line01, Distance to Line21:\n",
"-101.94229868 89.4692425083\n",
"X Y is :\n",
"4864820.52306 -7327.32357384\n",
"Distance to Line01, Distance to Line21:\n",
"-275.971673709 -82.6526595557\n",
"X Y is :\n",
"4864863.46999 -7502.36413382\n",
"Distance to Line01, Distance to Line21:\n",
"-101.699317163 89.6362684385\n",
"X Y is :\n",
"4864883.47433 -7425.35339613\n",
"Distance to Line01, Distance to Line21:\n",
"-159.774615215 33.7887165379\n",
"X Y is :\n",
"4864914.03981 -7540.2622979\n",
"Distance to Line01, Distance to Line21:\n",
"-44.2359286097 148.107977658\n",
"X Y is :\n",
"4864863.38529 -7502.42983131\n",
"Distance to Line01, Distance to Line21:\n",
"-101.682109098 89.6492198591\n",
"X Y is :\n",
"4864882.60858 -7488.5154868\n",
"Distance to Line01, Distance to Line21:\n",
"-104.712681408 87.5649191769\n",
"X Y is :\n",
"4864880.24028 -7490.40520562\n",
"Distance to Line01, Distance to Line21:\n",
"-104.185189995 87.972342285\n",
"X Y is :\n",
"4864914.22911 -7548.48766042\n",
"Distance to Line01, Distance to Line21:\n",
"-36.921016125 155.265976226\n",
"X Y is :\n",
"4864901.09343 -7549.47874283\n",
"Distance to Line01, Distance to Line21:\n",
"-42.3306140966 149.379074551\n",
"X Y is :\n",
"4864938.10597 -7529.37791695\n",
"Distance to Line01, Distance to Line21:\n",
"-42.2899153896 151.108740259\n",
"X Y is :\n",
"4864864.28191 -7434.44874066\n",
"Distance to Line01, Distance to Line21:\n",
"-160.961854236 31.7520761999\n",
"X Y is :\n",
"4864862.6837 -7505.11154881\n",
"Distance to Line01, Distance to Line21:\n",
"-99.6621561511 91.5914231936\n",
"X Y is :\n",
"4864874.43579 -7493.26263918\n",
"Distance to Line01, Distance to Line21:\n",
"-104.45057019 87.4479513688\n",
"X Y is :\n",
"4864929.92365 -7533.17665741\n",
"Distance to Line01, Distance to Line21:\n",
"-42.8653566458 150.172741237\n",
"X Y is :\n",
"4864935.7142 -7531.81574939\n",
"Distance to Line01, Distance to Line21:\n",
"-41.2922315022 151.974642525\n",
"X Y is :\n",
"4864872.12633 -7496.84466499\n",
"Distance to Line01, Distance to Line21:\n",
"-102.40857755 89.3382849739\n",
"X Y is :\n",
"4864867.41352 -7426.52017246\n",
"Distance to Line01, Distance to Line21:\n",
"-166.428384125 26.5522497456\n",
"X Y is :\n",
"4864862.6837 -7505.11154881\n",
"Distance to Line01, Distance to Line21:\n",
"-99.6621561511 91.5914231936\n",
"X Y is :\n",
"4864932.91489 -7533.61012151\n",
"Distance to Line01, Distance to Line21:\n",
"-41.0545518761 152.079133906\n",
"X Y is :\n",
"4864876.55182 -7491.81834863\n",
"Distance to Line01, Distance to Line21:\n",
"-104.707441742 87.2935057561\n",
"X Y is :\n",
"4864852.7282 -7506.69822511\n",
"Distance to Line01, Distance to Line21:\n",
"-103.028221438 87.8470010009\n",
"X Y is :\n",
"4864788.77583 -7400.09441572\n",
"Distance to Line01, Distance to Line21:\n",
"-227.234509972 -36.4680415305\n",
"X Y is :\n",
"4864868.61913 -7429.7380284\n",
"Distance to Line01, Distance to Line21:\n",
"-163.025718112 29.9329487801\n",
"X Y is :\n",
"4864853.24993 -7507.41076046\n",
"Distance to Line01, Distance to Line21:\n",
"-102.152959333 88.726274257\n",
"X Y is :\n",
"4864789.07824 -7399.8870582\n",
"Distance to Line01, Distance to Line21:\n",
"-227.272052811 -36.4909273832\n",
"X Y is :\n",
"4864788.64482 -7391.92432264\n",
"Distance to Line01, Distance to Line21:\n",
"-234.473012547 -43.5486983696\n",
"X Y is :\n",
"4864875.03085 -7424.77821428\n",
"Distance to Line01, Distance to Line21:\n",
"-164.316570352 28.9640530477\n",
"X Y is :\n",
"4864788.64802 -7399.68795462\n",
"Distance to Line01, Distance to Line21:\n",
"-227.652614171 -36.8825183803\n",
"X Y is :\n",
"4864835.63385 -7437.85267933\n",
"Distance to Line01, Distance to Line21:\n",
"-171.668582051 19.9796816096\n",
"X Y is :\n",
"4864859.75953 -7402.22765142\n",
"Distance to Line01, Distance to Line21:\n",
"-191.424049989 1.77284492135\n",
"X Y is :\n",
"4864888.59226 -7483.52280741\n",
"Distance to Line01, Distance to Line21:\n",
"-106.237039613 86.3482595376\n",
"X Y is :\n",
"4864919.29927 -7539.54756215\n",
"Distance to Line01, Distance to Line21:\n",
"-42.3491754211 150.1921606\n",
"X Y is :\n",
"4864884.44167 -7486.71147575\n",
"Distance to Line01, Distance to Line21:\n",
"-105.420774607 86.9565456667\n",
"X Y is :\n",
"4864980.48907 -7603.75527689\n",
"Distance to Line01, Distance to Line21:\n",
"43.2994719338 236.696096849\n",
"X Y is :\n",
"4864865.06565 -7434.24130862\n",
"Distance to Line01, Distance to Line21:\n",
"-160.769341427 31.9760154248\n",
"X Y is :\n",
"4864980.26433 -7603.10716489\n",
"Distance to Line01, Distance to Line21:\n",
"42.6227822423 236.024461484\n",
"X Y is :\n",
"4864803.95305 -7441.11339958\n",
"Distance to Line01, Distance to Line21:\n",
"-183.951036323 6.5287568216\n",
"X Y is :\n",
"4864862.0282 -7505.24878013\n",
"Distance to Line01, Distance to Line21:\n",
"-99.855015558 91.3730003573\n",
"X Y is :\n",
"4864885.24793 -7414.85913762\n",
"Distance to Line01, Distance to Line21:\n",
"-168.143871729 25.6898570574\n",
"X Y is :\n",
"4864803.88297 -7441.16976191\n",
"Distance to Line01, Distance to Line21:\n",
"-183.935036927 6.54119451108\n",
"X Y is :\n",
"4864862.14708 -7505.23922172\n",
"Distance to Line01, Distance to Line21:\n",
"-99.8065727221 91.4257747499\n",
"X Y is :\n",
"4864883.22641 -7487.80617686\n",
"Distance to Line01, Distance to Line21:\n",
"-105.040296207 87.2729274248\n",
"X Y is :\n",
"4864862.18255 -7505.16158371\n",
"Distance to Line01, Distance to Line21:\n",
"-99.8578055226 91.3773208931\n",
"X Y is :\n",
"4864887.88448 -7416.64022207\n",
"Distance to Line01, Distance to Line21:\n",
"-165.31901257 28.5711593064\n",
"X Y is :\n",
"4864863.41113 -7501.94534899\n",
"Distance to Line01, Distance to Line21:\n",
"-102.095278615 89.2465814629\n",
"X Y is :\n",
"4864804.23996 -7441.77992362\n",
"Distance to Line01, Distance to Line21:\n",
"-183.228453243 7.24808528094\n",
"X Y is :\n",
"4864913.7436 -7541.54489247\n",
"Distance to Line01, Distance to Line21:\n",
"-43.2510292602 149.057061975\n",
"X Y is :\n",
"4864863.53675 -7501.84476871\n",
"Distance to Line01, Distance to Line21:\n",
"-102.123563163 89.2246723342\n",
"X Y is :\n",
"4864854.45545 -7507.00752686\n",
"Distance to Line01, Distance to Line21:\n",
"-101.930771205 88.9984744071\n",
"X Y is :\n",
"4864847.1888 -7375.65785892\n",
"Distance to Line01, Distance to Line21:\n",
"-220.770521233 -27.4833788143\n",
"X Y is :\n",
"4864852.94874 -7507.45382414\n",
"Distance to Line01, Distance to Line21:\n",
"-102.259133484 88.6087515847\n",
"X Y is :\n",
"4864787.68398 -7398.24544864\n",
"Distance to Line01, Distance to Line21:\n",
"-229.380481838 -38.6152950401\n",
"X Y is :\n",
"4864852.75034 -7507.43066042\n",
"Distance to Line01, Distance to Line21:\n",
"-102.374330034 88.4871040594\n",
"X Y is :\n",
"4864853.49863 -7507.14422337\n",
"Distance to Line01, Distance to Line21:\n",
"-102.268157942 88.6250380042\n",
"X Y is :\n",
"4864862.48295 -7501.91139094\n",
"Distance to Line01, Distance to Line21:\n",
"-102.56886303 88.7413372671\n",
"X Y is :\n",
"4864858.19398 -7506.00884483\n",
"Distance to Line01, Distance to Line21:\n",
"-101.020556685 90.0587790742\n",
"X Y is :\n",
"4864784.65548 -7392.75033802\n",
"Distance to Line01, Distance to Line21:\n",
"-235.654793143 -44.8858741832\n",
"X Y is :\n",
"4864827.38679 -7357.0699874\n",
"Distance to Line01, Distance to Line21:\n",
"-246.563625304 -53.5968179468\n",
"X Y is :\n",
"4864776.97337 -7377.67024896\n",
"Distance to Line01, Distance to Line21:\n",
"-252.572533802 -61.7714628625\n",
"X Y is :\n",
"4864878.91624 -7491.64860931\n",
"Distance to Line01, Distance to Line21:\n",
"-103.72611229 88.3605777863\n",
"X Y is :\n",
"4864854.21077 -7427.59685802\n",
"Distance to Line01, Distance to Line21:\n",
"-171.79486772 20.7044238544\n",
"X Y is :\n",
"4864862.54672 -7505.08965776\n",
"Distance to Line01, Distance to Line21:\n",
"-99.7468724848 91.5023701\n",
"X Y is :\n",
"4864817.6299 -7364.4438062\n",
"Distance to Line01, Distance to Line21:\n",
"-244.751832165 -52.2715025716\n",
"X Y is :\n",
"4864889.94638 -7422.84007357\n",
"Distance to Line01, Distance to Line21:\n",
"-158.887843649 34.9509139042\n",
"X Y is :\n",
"4864764.97392 -7355.47966458\n",
"Distance to Line01, Distance to Line21:\n",
"-277.79958155 -86.9754139989\n",
"X Y is :\n",
"4864867.51339 -7498.96896947\n",
"Distance to Line01, Distance to Line21:\n",
"-102.748196292 88.7957388931\n",
"X Y is :\n",
"4864886.39055 -7420.81975442\n",
"Distance to Line01, Distance to Line21:\n",
"-162.362327476 31.3927179356\n",
"X Y is :\n",
"4864862.42396 -7505.1857481\n",
"Distance to Line01, Distance to Line21:\n",
"-99.7211637802 91.5218922982\n",
"X Y is :\n",
"4864888.65593 -7483.47304055\n",
"Distance to Line01, Distance to Line21:\n",
"-106.250312679 86.3381936262\n",
"X Y is :\n",
"4864888.80514 -7417.99664903\n",
"Distance to Line01, Distance to Line21:\n",
"-163.687487224 30.2077936581\n",
"X Y is :\n",
"4864871.18796 -7428.26615329\n",
"Distance to Line01, Distance to Line21:\n",
"-163.090343269 29.9870714598\n",
"X Y is :\n",
"4864863.90732 -7501.85448894\n",
"Distance to Line01, Distance to Line21:\n",
"-101.93785481 89.4230971615\n",
"X Y is :\n",
"4864864.20786 -7501.36478629\n",
"Distance to Line01, Distance to Line21:\n",
"-102.224280013 89.1568762672\n",
"X Y is :\n",
"4864757.7425 -7348.5207293\n",
"Distance to Line01, Distance to Line21:\n",
"-287.368973525 -96.658390817\n",
"X Y is :\n",
"4864854.03534 -7507.2586439\n",
"Distance to Line01, Distance to Line21:\n",
"-101.911061866 88.9985568815\n",
"X Y is :\n",
"4864864.47192 -7434.4674463\n",
"Distance to Line01, Distance to Line21:\n",
"-160.854580527 31.8655975131\n",
"X Y is :\n",
"4864873.69173 -7424.82740772\n",
"Distance to Line01, Distance to Line21:\n",
"-164.913588995 28.3194059794\n",
"X Y is :\n",
"4864863.4137 -7501.97948411\n",
"Distance to Line01, Distance to Line21:\n",
"-102.064068824 89.2772022199\n",
"X Y is :\n",
"4864858.12603 -7504.31083028\n",
"Distance to Line01, Distance to Line21:\n",
"-102.544425046 88.5662976339\n",
"X Y is :\n",
"4864854.16468 -7507.11259343\n",
"Distance to Line01, Distance to Line21:\n",
"-101.977505646 88.9395219327\n",
"X Y is :\n",
"4864762.3022 -7340.30520522\n",
"Distance to Line01, Distance to Line21:\n",
"-292.404778904 -101.372038631\n",
"X Y is :\n",
"4864860.60345 -7424.55464261\n",
"Distance to Line01, Distance to Line21:\n",
"-171.410576915 21.3718888814\n",
"X Y is :\n",
"4864829.35314 -7457.01332447\n",
"Distance to Line01, Distance to Line21:\n",
"-157.842375507 33.206203482\n",
"X Y is :\n",
"4864758.33871 -7348.56138352\n",
"Distance to Line01, Distance to Line21:\n",
"-287.048222558 -96.3176780502\n",
"X Y is :\n",
"4864868.84658 -7425.48097448\n",
"Distance to Line01, Distance to Line21:\n",
"-166.655986095 26.3952284267\n",
"X Y is :\n",
"4864876.00909 -7425.17073005\n",
"Distance to Line01, Distance to Line21:\n",
"-163.504130128 29.802769212\n",
"X Y is :\n",
"4864858.85171 -7505.90020072\n",
"Distance to Line01, Distance to Line21:\n",
"-100.801524556 90.3028839122\n",
"X Y is :\n",
"4864860.80901 -7501.94854141\n",
"Distance to Line01, Distance to Line21:\n",
"-103.33653158 87.9146158862\n",
"X Y is :\n",
"4864757.66386 -7348.7987546\n",
"Distance to Line01, Distance to Line21:\n",
"-287.162377539 -96.4600610474\n",
"X Y is :\n",
"4864819.56122 -7378.7767452\n",
"Distance to Line01, Distance to Line21:\n",
"-231.239730013 -38.9770379608\n",
"X Y is :\n",
"4864757.96717 -7348.32823119\n",
"Distance to Line01, Distance to Line21:\n",
"-287.430632068 -96.7083959502\n",
"X Y is :\n",
"4864863.46009 -7501.99031546\n",
"Distance to Line01, Distance to Line21:\n",
"-102.032374729 89.3102972265\n",
"X Y is :\n",
"4864822.77781 -7384.20356348\n",
"Distance to Line01, Distance to Line21:\n",
"-224.935476938 -32.6686071473\n",
"X Y is :\n",
"4864886.80403 -7489.61612983\n",
"Distance to Line01, Distance to Line21:\n",
"-101.740159604 90.6617171579\n",
"X Y is :\n",
"4864836.83736 -7450.77039428\n",
"Distance to Line01, Distance to Line21:\n",
"-159.747447135 31.6859570127\n",
"X Y is :\n",
"4864863.266 -7502.0603494\n",
"Distance to Line01, Distance to Line21:\n",
"-102.063658615 89.2708595631\n",
"X Y is :\n",
"4864857.90431 -7505.12695887\n",
"Distance to Line01, Distance to Line21:\n",
"-101.933612646 89.1531627434\n",
"X Y is :\n",
"4864825.66469 -7453.00604285\n",
"Distance to Line01, Distance to Line21:\n",
"-163.125434223 27.8743103366\n",
"X Y is :\n",
"4864799.53538 -7343.47123779\n",
"Distance to Line01, Distance to Line21:\n",
"-271.823095995 -79.5562137905\n",
"X Y is :\n",
"4864845.58344 -7379.45609352\n",
"Distance to Line01, Distance to Line21:\n",
"-218.202008638 -25.0462949701\n",
"X Y is :\n",
"4864845.56856 -7379.49213827\n",
"Distance to Line01, Distance to Line21:\n",
"-218.177465413 -25.022986718\n",
"X Y is :\n",
"4864862.8185 -7502.10608127\n",
"Distance to Line01, Distance to Line21:\n",
"-102.237437276 89.0805825254\n",
"X Y is :\n",
"4864829.17475 -7457.04459068\n",
"Distance to Line01, Distance to Line21:\n",
"-157.900202223 33.1415406562\n",
"X Y is :\n",
"4864818.20483 -7385.97905531\n",
"Distance to Line01, Distance to Line21:\n",
"-225.562355677 -33.4900872065\n",
"X Y is :\n",
"4864811.65054 -7330.9546874\n",
"Distance to Line01, Distance to Line21:\n",
"-277.024325136 -84.0865809514\n",
"X Y is :\n",
"4864819.52795 -7458.40783336\n",
"Distance to Line01, Distance to Line21:\n",
"-161.314922875 29.3636587799\n",
"X Y is :\n",
"4864864.93513 -7514.54504186\n",
"Distance to Line01, Distance to Line21:\n",
"-90.3002408727 100.844246334\n",
"X Y is :\n",
"4864845.56196 -7379.2096927\n",
"Distance to Line01, Distance to Line21:\n",
"-218.428693367 -25.268829837\n",
"X Y is :\n",
"4864804.80447 -7443.53365656\n",
"Distance to Line01, Distance to Line21:\n",
"-181.4182418 9.04310090629\n",
"X Y is :\n",
"4864845.61854 -7379.27755957\n",
"Distance to Line01, Distance to Line21:\n",
"-218.342037976 -25.1815527197\n",
"X Y is :\n",
"4864817.74478 -7462.63054143\n",
"Distance to Line01, Distance to Line21:\n",
"-158.458603422 32.0739170901\n",
"X Y is :\n",
"4864844.80977 -7377.24531892\n",
"Distance to Line01, Distance to Line21:\n",
"-220.513637965 -27.3409292883\n",
"X Y is :\n",
"4864845.53123 -7379.01895962\n",
"Distance to Line01, Distance to Line21:\n",
"-218.610908338 -25.4483238795\n",
"X Y is :\n",
"4864866.68577 -7431.84663151\n",
"Distance to Line01, Distance to Line21:\n",
"-162.098040733 30.7513583015\n",
"X Y is :\n",
"4864863.32071 -7502.06986797\n",
"Distance to Line01, Distance to Line21:\n",
"-102.029140651 89.3070943126\n",
"X Y is :\n",
"4864845.46895 -7379.26195282\n",
"Distance to Line01, Distance to Line21:\n",
"-218.427260343 -25.2716758285\n",
"X Y is :\n",
"4864764.34151 -7347.9139434\n",
"Distance to Line01, Distance to Line21:\n",
"-284.746973675 -93.7944414415\n",
"X Y is :\n",
"4864799.36474 -7342.26756923\n",
"Distance to Line01, Distance to Line21:\n",
"-272.961871454 -80.6770066122\n",
"X Y is :\n",
"4864845.15954 -7379.16865693\n",
"Distance to Line01, Distance to Line21:\n",
"-218.65713098 -25.5104707634\n",
"X Y is :\n",
"4864816.26091 -7458.91217427\n",
"Distance to Line01, Distance to Line21:\n",
"-162.433906903 28.1208364166\n",
"X Y is :\n",
"4864830.12882 -7350.08922263\n",
"Distance to Line01, Distance to Line21:\n",
"-251.383946154 -58.1828479703\n",
"X Y is :\n",
"4864774.62298 -7366.13726837\n",
"Distance to Line01, Distance to Line21:\n",
"-263.825764941 -72.8773148449\n",
"X Y is :\n",
"4864840.72683 -7374.79725407\n",
"Distance to Line01, Distance to Line21:\n",
"-224.615819973 -31.5366830211\n",
"X Y is :\n",
"4864800.69088 -7343.50571429\n",
"Distance to Line01, Distance to Line21:\n",
"-271.240382338 -78.9339320542\n",
"X Y is :\n",
"4864861.36632 -7409.28083997\n",
"Distance to Line01, Distance to Line21:\n",
"-184.460976709 8.65168595137\n",
"X Y is :\n",
"4864877.1978 -7491.99352757\n",
"Distance to Line01, Distance to Line21:\n",
"-104.244744792 87.7752239478\n",
"X Y is :\n",
"4864873.83139 -7425.41379024\n",
"Distance to Line01, Distance to Line21:\n",
"-164.331793414 28.8944103995\n",
"X Y is :\n",
"4864827.87927 -7354.79098041\n",
"Distance to Line01, Distance to Line21:\n",
"-248.329847088 -55.3005800441\n",
"X Y is :\n",
"4864815.37348 -7336.83690581\n",
"Distance to Line01, Distance to Line21:\n",
"-270.078003686 -77.1274946609\n",
"X Y is :\n",
"4864798.99424 -7342.61304092\n",
"Distance to Line01, Distance to Line21:\n",
"-272.835575937 -80.5704856833\n",
"X Y is :\n",
"4864880.02014 -7418.32320283\n",
"Distance to Line01, Distance to Line21:\n",
"-167.60072253 25.9820270638\n",
"X Y is :\n",
"4864886.07323 -7485.05539404\n",
"Distance to Line01, Distance to Line21:\n",
"-106.095286096 86.3717929209\n",
"X Y is :\n",
"4864794.11074 -7340.91908975\n",
"Distance to Line01, Distance to Line21:\n",
"-276.6581558 -84.5295168092\n",
"X Y is :\n",
"4864825.7592 -7349.57798465\n",
"Distance to Line01, Distance to Line21:\n",
"-253.922059071 -60.8630211899\n",
"X Y is :\n",
"4864878.26042 -7425.16225718\n",
"Distance to Line01, Distance to Line21:\n",
"-162.435226388 30.9502701162\n",
"X Y is :\n",
"4864881.3005 -7418.79483718\n",
"Distance to Line01, Distance to Line21:\n",
"-166.574347906 27.0436298748\n",
"X Y is :\n",
"4864889.07898 -7483.06909997\n",
"Distance to Line01, Distance to Line21:\n",
"-106.402840361 86.2084333132\n",
"X Y is :\n",
"4864843.26496 -7380.16022318\n",
"Distance to Line01, Distance to Line21:\n",
"-218.692012485 -25.6310637598\n",
"X Y is :\n",
"4864819.40318 -7349.98966869\n",
"Distance to Line01, Distance to Line21:\n",
"-256.599240064 -63.7698079229\n",
"X Y is :\n",
"4864826.79322 -7336.21332575\n",
"Distance to Line01, Distance to Line21:\n",
"-265.166003448 -71.8052736327\n",
"X Y is :\n",
"4864798.02547 -7343.14212203\n",
"Distance to Line01, Distance to Line21:\n",
"-272.834042012 -80.6132178409\n",
"X Y is :\n",
"4864834.61396 -7356.26829449\n",
"Distance to Line01, Distance to Line21:\n",
"-243.812496897 -50.5779827053\n",
"X Y is :\n",
"4864889.28709 -7483.05639469\n",
"Distance to Line01, Distance to Line21:\n",
"-106.31449974 86.3042766246\n",
"X Y is :\n",
"4864826.68845 -7332.21589811\n",
"Distance to Line01, Distance to Line21:\n",
"-268.727067814 -75.2905245264\n",
"X Y is :\n",
"4864845.52479 -7379.46675067\n",
"Distance to Line01, Distance to Line21:\n",
"-218.220689994 -25.067231449\n",
"X Y is :\n",
"4864825.04315 -7329.06570451\n",
"Distance to Line01, Distance to Line21:\n",
"-272.280517972 -78.8386700369\n",
"X Y is :\n",
"4864825.30428 -7329.20102568\n",
"Distance to Line01, Distance to Line21:\n",
"-272.036820365 -78.5885655832\n",
"X Y is :\n",
"4864845.58955 -7379.27938135\n",
"Distance to Line01, Distance to Line21:\n",
"-218.354297051 -25.1948578684\n",
"X Y is :\n",
"4864798.68828 -7344.35951366\n",
"Distance to Line01, Distance to Line21:\n",
"-271.447907565 -79.2281930844\n",
"X Y is :\n",
"4864816.21272 -7338.23123711\n",
"Distance to Line01, Distance to Line21:\n",
"-268.452118186 -75.5000904174\n",
"X Y is :\n",
"4864822.80793 -7328.32297521\n",
"Distance to Line01, Distance to Line21:\n",
"-274.00151006 -80.622765449\n",
"X Y is :\n",
"4864879.52065 -7490.96115403\n",
"Distance to Line01, Distance to Line21:\n",
"-104.040945298 88.0804660729\n",
"X Y is :\n",
"4864834.70771 -7356.42026418\n",
"Distance to Line01, Distance to Line21:\n",
"-243.634198527 -50.3994392847\n",
"X Y is :\n",
"4864845.58322 -7379.46315171\n",
"Distance to Line01, Distance to Line21:\n",
"-218.195915709 -25.0403500961\n",
"X Y is :\n",
"4864828.06036 -7447.13134588\n",
"Distance to Line01, Distance to Line21:\n",
"-167.139878227 24.0601040916\n",
"X Y is :\n",
"4864840.45673 -7373.25777729\n",
"Distance to Line01, Distance to Line21:\n",
"-226.097091405 -32.996761383\n",
"X Y is :\n",
"4864811.36797 -7338.42699165\n",
"Distance to Line01, Distance to Line21:\n",
"-270.596425035 -77.8170631612\n",
"X Y is :\n",
"4864802.49494 -7355.69659251\n",
"Distance to Line01, Distance to Line21:\n",
"-259.670511289 -67.5435505804\n",
"X Y is :\n",
"4864845.57029 -7379.4148025\n",
"Distance to Line01, Distance to Line21:\n",
"-218.244562403 -25.0884860717\n",
"X Y is :\n",
"4864812.43271 -7316.59565039\n",
"Distance to Line01, Distance to Line21:\n",
"-289.262048247 -96.0116188948\n",
"X Y is :\n",
"4864828.28915 -7339.08144986\n",
"Distance to Line01, Distance to Line21:\n",
"-261.931707179 -68.5758781974\n",
"X Y is :\n",
"4864812.25715 -7340.49951542\n",
"Distance to Line01, Distance to Line21:\n",
"-268.350997121 -75.5818579757\n",
"X Y is :\n",
"4864803.71353 -7329.13540274\n",
"Distance to Line01, Distance to Line21:\n",
"-282.416849739 -89.7194394074\n",
"X Y is :\n",
"4864798.64598 -7362.1257297\n",
"Distance to Line01, Distance to Line21:\n",
"-255.863900933 -63.9988268454\n",
"X Y is :\n",
"4864812.06604 -7316.44512473\n",
"Distance to Line01, Distance to Line21:\n",
"-289.569558945 -96.3289109185\n",
"X Y is :\n",
"4864817.31041 -7335.89457666\n",
"Distance to Line01, Distance to Line21:\n",
"-269.979627319 -76.9429100742\n",
"X Y is :\n",
"4864836.19776 -7382.07481445\n",
"Distance to Line01, Distance to Line21:\n",
"-220.389189768 -27.6124977542\n",
"X Y is :\n",
"4864826.95199 -7359.48675828\n",
"Distance to Line01, Distance to Line21:\n",
"-244.64882475 -51.7452060276\n",
"X Y is :\n",
"4864789.70018 -7389.79440074\n",
"Distance to Line01, Distance to Line21:\n",
"-235.839183091 -44.8357640329\n",
"X Y is :\n",
"4864807.85434 -7319.54959025\n",
"Distance to Line01, Distance to Line21:\n",
"-288.856464451 -95.8242502017\n",
"X Y is :\n",
"4864812.24862 -7316.56117392\n",
"Distance to Line01, Distance to Line21:\n",
"-289.38033918 -96.1356373963\n",
"X Y is :\n",
"4864818.9907 -7348.12420059\n",
"Distance to Line01, Distance to Line21:\n",
"-258.43490347 -65.5827580527\n",
"X Y is :\n",
"4864788.1637 -7373.45654805\n",
"Distance to Line01, Distance to Line21:\n",
"-250.92344875 -59.6487824448\n",
"X Y is :\n",
"4864812.17555 -7316.46698548\n",
"Distance to Line01, Distance to Line21:\n",
"-289.498001927 -96.2539734637\n",
"X Y is :\n",
"4864841.19139 -7381.1507983\n",
"Distance to Line01, Distance to Line21:\n",
"-218.813343975 -25.8443228511\n",
"X Y is :\n",
"4864833.81236 -7352.08936562\n",
"Distance to Line01, Distance to Line21:\n",
"-247.86613027 -54.5764702015\n",
"X Y is :\n",
"4864812.93858 -7319.03273897\n",
"Distance to Line01, Distance to Line21:\n",
"-286.879677926 -93.6600715745\n",
"X Y is :\n",
"4864812.40448 -7316.52506352\n",
"Distance to Line01, Distance to Line21:\n",
"-289.337539026 -96.0866897366\n",
"X Y is :\n",
"4864784.34863 -7398.37995364\n",
"Distance to Line01, Distance to Line21:\n",
"-230.856949653 -40.2106287105\n",
"X Y is :\n",
"4864805.25215 -7329.96663798\n",
"Distance to Line01, Distance to Line21:\n",
"-280.951161789 -88.2166746974\n",
"X Y is :\n",
"4864785.1945 -7343.69259051\n",
"Distance to Line01, Distance to Line21:\n",
"-278.484955858 -86.7220615824\n",
"X Y is :\n",
"4864791.08857 -7400.75935083\n",
"Distance to Line01, Distance to Line21:\n",
"-225.544787496 -34.7109690533\n",
"X Y is :\n",
"4864822.89909 -7337.17132653\n",
"Distance to Line01, Distance to Line21:\n",
"-266.186338544 -72.9803106656\n",
"X Y is :\n",
"4864810.14765 -7389.45884653\n",
"Distance to Line01, Distance to Line21:\n",
"-226.358104509 -34.6356941062\n",
"X Y is :\n",
"4864865.67498 -7432.97705645\n",
"Distance to Line01, Distance to Line21:\n",
"-161.588428669 31.2032867317\n",
"X Y is :\n",
"4864810.09261 -7318.611602\n",
"Distance to Line01, Distance to Line21:\n",
"-288.610202931 -95.4813687992\n",
"X Y is :\n",
"4864766.90632 -7344.71633291\n",
"Distance to Line01, Distance to Line21:\n",
"-286.329250145 -95.2238049982\n",
"X Y is :\n",
"4864811.24721 -7332.8962644\n",
"Distance to Line01, Distance to Line21:\n",
"-275.511850401 -82.6267526838\n",
"X Y is :\n",
"4864784.11462 -7399.10879734\n",
"Distance to Line01, Distance to Line21:\n",
"-230.32867935 -39.7049989758\n",
"X Y is :\n",
"4864816.35097 -7323.23973559\n",
"Distance to Line01, Distance to Line21:\n",
"-281.553190984 -88.2983373121\n",
"X Y is :\n",
"4864879.10707 -7425.81844661\n",
"Distance to Line01, Distance to Line21:\n",
"-161.454113275 31.9478334332\n",
"X Y is :\n",
"4864873.23491 -7426.35566271\n",
"Distance to Line01, Distance to Line21:\n",
"-163.789709797 29.3969917033\n",
"X Y is :\n",
"4864847.02524 -7375.13429258\n",
"Distance to Line01, Distance to Line21:\n",
"-221.308572737 -28.0167205583\n",
"X Y is :\n",
"4864776.66471 -7379.0197794\n",
"Distance to Line01, Distance to Line21:\n",
"-251.534800063 -60.7713087328\n",
"X Y is :\n",
"4864776.21493 -7379.31866851\n",
"Distance to Line01, Distance to Line21:\n",
"-251.487319954 -60.7454389374\n",
"X Y is :\n",
"4864846.31935 -7374.48719933\n",
"Distance to Line01, Distance to Line21:\n",
"-222.21440212 -28.9342775021\n",
"X Y is :\n",
"4864891.76804 -7422.00787753\n",
"Distance to Line01, Distance to Line21:\n",
"-158.747847498 35.1709132748\n",
"X Y is :\n",
"4864874.23266 -7424.90227451\n",
"Distance to Line01, Distance to Line21:\n",
"-164.589215782 28.6611352741\n",
"X Y is :\n",
"4864814.40204 -7326.22293527\n",
"Distance to Line01, Distance to Line21:\n",
"-279.864790515 -86.7371327668\n",
"X Y is :\n",
"4864810.93834 -7317.65916503\n",
"Distance to Line01, Distance to Line21:\n",
"-289.042398782 -95.8651691602\n",
"X Y is :\n",
"4864778.78332 -7340.2054726\n",
"Distance to Line01, Distance to Line21:\n",
"-284.612866423 -93.0039972363\n",
"X Y is :\n",
"4864872.25915 -7427.63002726\n",
"Distance to Line01, Distance to Line21:\n",
"-163.136926384 29.9904505154\n",
"X Y is :\n",
"4864785.48876 -7397.21788708\n",
"Distance to Line01, Distance to Line21:\n",
"-231.332516606 -40.6233772935\n",
"X Y is :\n",
"4864812.1816 -7316.58978566\n",
"Distance to Line01, Distance to Line21:\n",
"-289.387250136 -96.1454517971\n",
"X Y is :\n",
"4864811.7899 -7316.4361666\n",
"Distance to Line01, Distance to Line21:\n",
"-289.709448632 -96.4782423908\n",
"X Y is :\n",
"4864842.00511 -7367.65297851\n",
"Distance to Line01, Distance to Line21:\n",
"-230.279569974 -37.01388447\n",
"X Y is :\n",
"4864866.83947 -7431.38083656\n",
"Distance to Line01, Distance to Line21:\n",
"-162.433668137 30.4303447396\n",
"X Y is :\n",
"4864877.42554 -7441.16565769\n",
"Distance to Line01, Distance to Line21:\n",
"-148.778446939 44.2598403711\n",
"X Y is :\n",
"4864812.68334 -7332.70806288\n",
"Distance to Line01, Distance to Line21:\n",
"-274.990544836 -82.0516759719\n",
"X Y is :\n",
"4864817.31448 -7359.0259424\n",
"Distance to Line01, Distance to Line21:\n",
"-249.661190524 -57.0841496833\n",
"X Y is :\n",
"4864763.3294 -7340.90581294\n",
"Distance to Line01, Distance to Line21:\n",
"-291.386165193 -100.329580166\n",
"X Y is :\n",
"4864810.28 -7322.36554573\n",
"Distance to Line01, Distance to Line21:\n",
"-285.223490179 -92.162751026\n",
"X Y is :\n",
"4864811.7522 -7316.8444329\n",
"Distance to Line01, Distance to Line21:\n",
"-289.368886487 -96.1471091703\n",
"X Y is :\n",
"4864847.02144 -7374.50483538\n",
"Distance to Line01, Distance to Line21:\n",
"-221.863245398 -28.5590127424\n",
"X Y is :\n",
"4864823.5414 -7354.17824569\n",
"Distance to Line01, Distance to Line21:\n",
"-250.941923621 -58.0515930301\n",
"X Y is :\n",
"4864795.84389 -7355.63477587\n",
"Distance to Line01, Distance to Line21:\n",
"-262.904624485 -71.0081348827\n",
"X Y is :\n",
"4864803.82385 -7331.45302735\n",
"Distance to Line01, Distance to Line21:\n",
"-280.328512676 -87.6733299962\n",
"X Y is :\n",
"4864784.70443 -7336.03519438\n",
"Distance to Line01, Distance to Line21:\n",
"-285.44481562 -93.5467756855\n",
"X Y is :\n",
"4864811.32058 -7318.51257143\n",
"Distance to Line01, Distance to Line21:\n",
"-288.110099981 -94.9365190585\n",
"X Y is :\n",
"4864815.69788 -7325.09957138\n",
"Distance to Line01, Distance to Line21:\n",
"-280.231918674 -87.0367873536\n",
"X Y is :\n",
"4864837.31237 -7363.67683773\n",
"Distance to Line01, Distance to Line21:\n",
"-236.015413377 -42.8341668094\n",
"X Y is :\n",
"4864837.28981 -7369.3813783\n",
"Distance to Line01, Distance to Line21:\n",
"-231.015849403 -37.9487868333\n",
"X Y is :\n",
"4864940.84385 -7527.39559329\n",
"Distance to Line01, Distance to Line21:\n",
"-42.7220447308 150.81139529\n",
"X Y is :\n",
"4864764.29488 -7344.88659328\n",
"Distance to Line01, Distance to Line21:\n",
"-287.428219665 -96.4171327344\n",
"X Y is :\n",
"4864769.93524 -7339.44260549\n",
"Distance to Line01, Distance to Line21:\n",
"-289.513107097 -98.1973104917\n",
"X Y is :\n",
"4864811.91815 -7315.3491888\n",
"Distance to Line01, Distance to Line21:\n",
"-290.602833648 -97.3455519051\n",
"X Y is :\n",
"4864846.80035 -7374.92028305\n",
"Distance to Line01, Distance to Line21:\n",
"-221.604056002 -28.3157839112\n",
"X Y is :\n",
"4864813.17303 -7322.53554536\n",
"Distance to Line01, Distance to Line21:\n",
"-283.69104362 -90.5329006825\n",
"X Y is :\n",
"4864789.08735 -7399.35584334\n",
"Distance to Line01, Distance to Line21:\n",
"-227.7342689 -36.9422663707\n",
"X Y is :\n",
"4864806.80844 -7350.69392486\n",
"Distance to Line01, Distance to Line21:\n",
"-262.002146668 -69.6254724707\n",
"X Y is :\n",
"4864847.13955 -7376.91907159\n",
"Distance to Line01, Distance to Line21:\n",
"-219.686332368 -26.4259767208\n",
"X Y is :\n",
"4864816.12439 -7348.4689416\n",
"Distance to Line01, Distance to Line21:\n",
"-259.502477078 -66.7570371406\n",
"X Y is :\n",
"4864824.44447 -7360.76871096\n",
"Distance to Line01, Distance to Line21:\n",
"-244.721703893 -51.9309221959\n",
"X Y is :\n",
"4864811.99415 -7316.48749524\n",
"Distance to Line01, Distance to Line21:\n",
"-289.566712243 -96.3294107104\n",
"X Y is :\n",
"4864810.11837 -7318.3495969\n",
"Distance to Line01, Distance to Line21:\n",
"-288.828008843 -95.6930690423\n",
"X Y is :\n",
"4864820.94137 -7372.18125855\n",
"Distance to Line01, Distance to Line21:\n",
"-236.372766066 -43.9308854768\n",
"X Y is :\n",
"4864784.14706 -7399.59324224\n",
"Distance to Line01, Distance to Line21:\n",
"-229.887676335 -39.2724958354\n",
"X Y is :\n",
"4864942.12317 -7526.16090644\n",
"Distance to Line01, Distance to Line21:\n",
"-43.1948473252 150.40770368\n",
"X Y is :\n",
"4864799.97947 -7349.14881876\n",
"Distance to Line01, Distance to Line21:\n",
"-266.6241096 -74.4546190315\n",
"X Y is :\n",
"4864833.95828 -7376.51162206\n",
"Distance to Line01, Distance to Line21:\n",
"-226.346075498 -33.5368113553\n",
"X Y is :\n",
"4864784.16002 -7398.6452056\n",
"Distance to Line01, Distance to Line21:\n",
"-230.714150475 -40.0796729597\n",
"X Y is :\n",
"4864785.12877 -7354.94176881\n",
"Distance to Line01, Distance to Line21:\n",
"-268.636124562 -77.0991375564\n",
"X Y is :\n",
"4864933.28783 -7533.41042821\n",
"Distance to Line01, Distance to Line21:\n",
"-41.0516413419 152.099006238\n",
"X Y is :\n",
"4864789.9129 -7387.75890168\n",
"Distance to Line01, Distance to Line21:\n",
"-237.525278826 -46.4739864046\n",
"X Y is :\n",
"4864933.10246 -7533.47591062\n",
"Distance to Line01, Distance to Line21:\n",
"-41.0827504554 152.060137853\n",
"X Y is :\n",
"4864833.8392 -7379.14628462\n",
"Distance to Line01, Distance to Line21:\n",
"-224.088955771 -31.3362130651\n",
"X Y is :\n",
"4864807.87963 -7345.33215647\n",
"Distance to Line01, Distance to Line21:\n",
"-266.199305895 -73.6787306469\n",
"X Y is :\n",
"4864799.12274 -7342.32865005\n",
"Distance to Line01, Distance to Line21:\n",
"-273.02392121 -80.7487009603\n",
"X Y is :\n",
"4864819.80081 -7324.44254727\n",
"Distance to Line01, Distance to Line21:\n",
"-278.847407494 -85.496283357\n",
"X Y is :\n",
"4864795.03115 -7343.74873215\n",
"Distance to Line01, Distance to Line21:\n",
"-273.732814332 -81.6283606615\n",
"X Y is :\n",
"4864784.64579 -7393.46078206\n",
"Distance to Line01, Distance to Line21:\n",
"-235.035432768 -44.2809737173\n",
"X Y is :\n",
"4864781.06226 -7335.99720577\n",
"Distance to Line01, Distance to Line21:\n",
"-287.219478826 -95.4475646944\n",
"X Y is :\n",
"4864793.69114 -7407.05696902\n",
"Distance to Line01, Distance to Line21:\n",
"-218.769257108 -27.9699612269\n",
"X Y is :\n",
"4864813.1125 -7324.64179632\n",
"Distance to Line01, Distance to Line21:\n",
"-281.870039233 -88.7558739107\n",
"X Y is :\n",
"4864834.8467 -7364.09496697\n",
"Distance to Line01, Distance to Line21:\n",
"-236.826989181 -43.7399502206\n",
"X Y is :\n",
"4864844.30873 -7380.02426159\n",
"Distance to Line01, Distance to Line21:\n",
"-218.312410678 -25.2123978983\n",
"X Y is :\n",
"4864801.14988 -7351.78410985\n",
"Distance to Line01, Distance to Line21:\n",
"-263.749943901 -71.592065966\n",
"X Y is :\n",
"4864934.13544 -7525.35383774\n",
"Distance to Line01, Distance to Line21:\n",
"-47.7225840844 145.617744625\n",
"X Y is :\n",
"4864785.89587 -7340.5504525\n",
"Distance to Line01, Distance to Line21:\n",
"-280.909404664 -89.0596158803\n",
"X Y is :\n",
"4864804.83686 -7324.59732214\n",
"Distance to Line01, Distance to Line21:\n",
"-285.865628127 -93.0388740526\n",
"X Y is :\n",
"4864845.44319 -7379.39424337\n",
"Distance to Line01, Distance to Line21:\n",
"-218.323386318 -25.1713291084\n",
"X Y is :\n",
"4864933.25893 -7533.52223058\n",
"Distance to Line01, Distance to Line21:\n",
"-40.96726245 152.18015579\n",
"X Y is :\n",
"4864845.45783 -7379.49950684\n",
"Distance to Line01, Distance to Line21:\n",
"-218.22393291 -25.073458159\n",
"X Y is :\n",
"4864813.1125 -7324.64179632\n",
"Distance to Line01, Distance to Line21:\n",
"-281.870039233 -88.7558739107\n",
"X Y is :\n",
"4864791.82017 -7341.25747829\n",
"Distance to Line01, Distance to Line21:\n",
"-277.456052742 -85.4139362079\n",
"X Y is :\n",
"4864829.97796 -7369.38553574\n",
"Distance to Line01, Distance to Line21:\n",
"-234.507942613 -41.6956827804\n",
"X Y is :\n",
"4864845.26959 -7378.52715409\n",
"Distance to Line01, Distance to Line21:\n",
"-219.167953628 -26.0047074152\n",
"X Y is :\n",
"4864819.65417 -7383.23320675\n",
"Distance to Line01, Distance to Line21:\n",
"-227.281140418 -35.1037983496\n",
"X Y is :\n",
"4864812.20636 -7326.85057153\n",
"Distance to Line01, Distance to Line21:\n",
"-280.363271475 -87.3245803068\n",
"X Y is :\n",
"4864832.91134 -7374.98930658\n",
"Distance to Line01, Distance to Line21:\n",
"-228.183670842 -35.3806168843\n",
"X Y is :\n",
"4864830.5175 -7378.11526463\n",
"Distance to Line01, Distance to Line21:\n",
"-226.582593261 -33.9250722504\n",
"X Y is :\n",
"4864803.47022 -7342.39577046\n",
"Distance to Line01, Distance to Line21:\n",
"-270.886471042 -78.4611337367\n",
"X Y is :\n",
"4864811.96937 -7316.98953244\n",
"Distance to Line01, Distance to Line21:\n",
"-289.137618608 -95.9111603281\n",
"X Y is :\n",
"4864828.39954 -7381.93752727\n",
"Distance to Line01, Distance to Line21:\n",
"-224.238046148 -31.7302887083\n",
"X Y is :\n",
"4864829.25756 -7343.09679577\n",
"Distance to Line01, Distance to Line21:\n",
"-257.942002398 -64.6322566128\n",
"X Y is :\n",
"4864833.73262 -7376.55830662\n",
"Distance to Line01, Distance to Line21:\n",
"-226.412954912 -33.6124797596\n",
"X Y is :\n",
"4864812.22349 -7316.51614579\n",
"Distance to Line01, Distance to Line21:\n",
"-289.431902327 -96.1871808964\n",
"X Y is :\n",
"4864781.02288 -7341.48202058\n",
"Distance to Line01, Distance to Line21:\n",
"-282.420945637 -90.759433777\n",
"X Y is :\n",
"4864802.07771 -7382.26028599\n",
"Distance to Line01, Distance to Line21:\n",
"-236.538852206 -44.9544744448\n",
"X Y is :\n",
"4864827.5743 -7337.16522948\n",
"Distance to Line01, Distance to Line21:\n",
"-263.956508273 -70.5874907155\n",
"X Y is :\n",
"4864786.32131 -7395.20050256\n",
"Distance to Line01, Distance to Line21:\n",
"-232.706365122 -41.9281197134\n",
"X Y is :\n",
"4864816.62318 -7321.86446578\n",
"Distance to Line01, Distance to Line21:\n",
"-282.63096352 -89.3392887498\n",
"X Y is :\n",
"4864817.50244 -7323.29257383\n",
"Distance to Line01, Distance to Line21:\n",
"-280.95627651 -87.6623601359\n",
"X Y is :\n",
"4864833.85124 -7379.45882325\n",
"Distance to Line01, Distance to Line21:\n",
"-223.808696739 -31.061747618\n",
"X Y is :\n",
"4864810.54687 -7329.69171107\n",
"Distance to Line01, Distance to Line21:\n",
"-278.661265334 -85.7368630924\n",
"X Y is :\n",
"4864787.01403 -7337.3771269\n",
"Distance to Line01, Distance to Line21:\n",
"-283.161982436 -91.2101597021\n",
"X Y is :\n",
"4864767.96362 -7360.62510519\n",
"Distance to Line01, Distance to Line21:\n",
"-271.850940498 -81.0249059709\n",
"X Y is :\n",
"4864885.6317 -7557.73377093\n",
"Distance to Line01, Distance to Line21:\n",
"-42.4722956991 148.534660376\n",
"X Y is :\n",
"4864835.53052 -7377.20586343\n",
"Distance to Line01, Distance to Line21:\n",
"-224.984637724 -32.1344024231\n",
"X Y is :\n",
"4864812.84823 -7317.36830752\n",
"Distance to Line01, Distance to Line21:\n",
"-288.384757548 -95.1352120784\n",
"X Y is :\n",
"4864828.07633 -7342.35424178\n",
"Distance to Line01, Distance to Line21:\n",
"-259.158934732 -65.8755782791\n",
"X Y is :\n",
"4864819.76375 -7322.80830444\n",
"Distance to Line01, Distance to Line21:\n",
"-280.30049672 -86.9181772826\n",
"X Y is :\n",
"4864819.69473 -7321.41190518\n",
"Distance to Line01, Distance to Line21:\n",
"-281.559963686 -88.1522901727\n",
"X Y is :\n",
"4864758.76919 -7348.16736192\n",
"Distance to Line01, Distance to Line21:\n",
"-287.188482371 -96.435108563\n",
"X Y is :\n",
"4864823.49276 -7336.85902201\n",
"Distance to Line01, Distance to Line21:\n",
"-266.176807122 -72.9438894932\n",
"X Y is :\n",
"4864814.73469 -7320.25812831\n",
"Distance to Line01, Distance to Line21:\n",
"-284.944696489 -91.6868785014\n",
"X Y is :\n",
"4864827.68341 -7339.87593994\n",
"Distance to Line01, Distance to Line21:\n",
"-261.523499472 -68.2045657478\n",
"X Y is :\n",
"4864831.3792 -7348.21349464\n",
"Distance to Line01, Distance to Line21:\n",
"-252.43362042 -59.1516766939\n",
"X Y is :\n",
"4864773.78251 -7341.7440225\n",
"Distance to Line01, Distance to Line21:\n",
"-285.652396599 -94.2483228607\n",
"X Y is :\n",
"4864791.48555 -7399.0990653\n",
"Distance to Line01, Distance to Line21:\n",
"-226.813233785 -35.9325815038\n",
"X Y is :\n",
"4864897.4588 -7550.90475121\n",
"Distance to Line01, Distance to Line21:\n",
"-42.8158286737 148.738894822\n",
"X Y is :\n",
"4864830.83861 -7345.29214224\n",
"Distance to Line01, Distance to Line21:\n",
"-255.257921176 -61.9367373415\n",
"X Y is :\n",
"4864827.68726 -7352.27142287\n",
"Distance to Line01, Distance to Line21:\n",
"-250.634595356 -57.5619320549\n",
"X Y is :\n",
"4864811.57691 -7316.87057112\n",
"Distance to Line01, Distance to Line21:\n",
"-289.429731742 -96.2145803623\n",
"X Y is :\n",
"4864812.16133 -7316.4283913\n",
"Distance to Line01, Distance to Line21:\n",
"-289.538695562 -96.2943950991\n",
"X Y is :\n",
"4864831.71182 -7348.88575317\n",
"Distance to Line01, Distance to Line21:\n",
"-251.684146804 -58.4039792927\n",
"X Y is :\n",
"4864815.05386 -7318.74890013\n",
"Distance to Line01, Distance to Line21:\n",
"-286.117676282 -92.8187384889\n",
"X Y is :\n",
"4864832.42725 -7350.38897398\n",
"Distance to Line01, Distance to Line21:\n",
"-250.02180798 -56.7465988752\n",
"X Y is :\n",
"4864842.07083 -7380.3553808\n",
"Distance to Line01, Distance to Line21:\n",
"-219.091512135 -26.0760425336\n",
"X Y is :\n",
"4864811.91964 -7316.7372921\n",
"Distance to Line01, Distance to Line21:\n",
"-289.382937344 -96.1531971809\n",
"X Y is :\n",
"4864812.17401 -7316.46416477\n",
"Distance to Line01, Distance to Line21:\n",
"-289.50121715 -96.2571863738\n",
"X Y is :\n",
"4864788.22751 -7398.07407104\n",
"Distance to Line01, Distance to Line21:\n",
"-229.271146722 -38.4836184616\n",
"X Y is :\n",
"4864812.18733 -7316.37132997\n",
"Distance to Line01, Distance to Line21:\n",
"-289.576382293 -96.3300417562\n",
"X Y is :\n",
"4864812.12929 -7316.7005911\n",
"Distance to Line01, Distance to Line21:\n",
"-289.314937767 -96.0771643855\n",
"X Y is :\n",
"4864812.16403 -7316.56245798\n",
"Distance to Line01, Distance to Line21:\n",
"-289.419653961 -96.1779245825\n",
"X Y is :\n",
"4864812.4348 -7316.61610473\n",
"Distance to Line01, Distance to Line21:\n",
"-289.243082059 -95.9929863745\n",
"X Y is :\n",
"4864816.66156 -7322.72855712\n",
"Distance to Line01, Distance to Line21:\n",
"-281.85367631 -88.5778414986\n",
"X Y is :\n",
"4864812.6764 -7316.94758618\n",
"Distance to Line01, Distance to Line21:\n",
"-288.836430227 -95.584507292\n",
"X Y is :\n",
"4865005.5526 -7639.82831713\n",
"Distance to Line01, Distance to Line21:\n",
"86.9654533199 280.518126672\n",
"X Y is :\n",
"4864933.65857 -7676.1386866\n",
"Distance to Line01, Distance to Line21:\n",
"84.4851427984 274.811473475\n",
"X Y is :\n",
"4865001.44953 -7638.96799877\n",
"Distance to Line01, Distance to Line21:\n",
"84.2481775006 277.675015603\n",
"X Y is :\n",
"4864933.96134 -7672.27537893\n",
"Distance to Line01, Distance to Line21:\n",
"81.2367166545 271.650391814\n",
"X Y is :\n",
"4864926.08522 -7649.61734394\n",
"Distance to Line01, Distance to Line21:\n",
"57.5704354878 248.160142161\n",
"X Y is :\n",
"4864908.52526 -7638.75129318\n",
"Distance to Line01, Distance to Line21:\n",
"39.6313870007 229.825365451\n",
"X Y is :\n",
"4864979.64338 -7605.44135058\n",
"Distance to Line01, Distance to Line21:\n",
"44.3760470113 237.709694208\n",
"X Y is :\n",
"4864923.14766 -7536.04532934\n",
"Distance to Line01, Distance to Line21:\n",
"-43.585328798 149.159691532\n",
"X Y is :\n",
"4864935.11273 -7533.34290661\n",
"Distance to Line01, Distance to Line21:\n",
"-40.238476523 152.977086454\n",
"X Y is :\n",
"4864899.52141 -7499.51662539\n",
"Distance to Line01, Distance to Line21:\n",
"-86.9643710365 105.683728701\n",
"X Y is :\n",
"4864863.87667 -7501.82915578\n",
"Distance to Line01, Distance to Line21:\n",
"-101.97475941 89.3856283548\n",
"X Y is :\n",
"4864864.25045 -7478.34252954\n",
"Distance to Line01, Distance to Line21:\n",
"-122.424580067 69.4157089817\n",
"X Y is :\n",
"4864866.56941 -7432.47982377\n",
"Distance to Line01, Distance to Line21:\n",
"-161.597534287 31.2352241213\n",
"X Y is :\n",
"4864868.11646 -7430.5798541\n",
"Distance to Line01, Distance to Line21:\n",
"-162.526658323 30.3977629373\n",
"X Y is :\n",
"4864874.89316 -7424.82225785\n",
"Distance to Line01, Distance to Line21:\n",
"-164.343717941 28.9312330767\n",
"X Y is :\n",
"4864874.90962 -7424.78026889\n",
"Distance to Line01, Distance to Line21:\n",
"-164.372727489 28.9036316432\n",
"X Y is :\n",
"4864867.04246 -7432.21830096\n",
"Distance to Line01, Distance to Line21:\n",
"-161.601068375 31.2533683271\n",
"X Y is :\n",
"4864878.22918 -7424.67128154\n",
"Distance to Line01, Distance to Line21:\n",
"-162.881390977 30.5127770788\n",
"X Y is :\n",
"4864880.22619 -7425.07771527\n",
"Distance to Line01, Distance to Line21:\n",
"-161.569662331 31.885995296\n",
"X Y is :\n",
"4864889.39993 -7442.12639798\n",
"Distance to Line01, Distance to Line21:\n",
"-142.209741975 51.2265947821\n",
"X Y is :\n",
"4864822.55911 -7458.09374042\n",
"Distance to Line01, Distance to Line21:\n",
"-160.141619855 30.6488006594\n",
"X Y is :\n",
"4864826.13734 -7457.2526751\n",
"Distance to Line01, Distance to Line21:\n",
"-159.169605006 31.7621883311\n",
"X Y is :\n",
"4864826.82035 -7457.23451165\n",
"Distance to Line01, Distance to Line21:\n",
"-158.859017142 32.0969309157\n",
"X Y is :\n",
"4864862.28018 -7401.96119034\n",
"Distance to Line01, Distance to Line21:\n",
"-190.452981909 2.83702062936\n",
"X Y is :\n",
"4864884.36409 -7415.03568915\n",
"Distance to Line01, Distance to Line21:\n",
"-168.411362528 25.3880666862\n",
"X Y is :\n",
"4864886.95563 -7417.09047817\n",
"Distance to Line01, Distance to Line21:\n",
"-165.367625285 28.4812381567\n",
"X Y is :\n",
"4864891.18165 -7418.55632825\n",
"Distance to Line01, Distance to Line21:\n",
"-162.059723821 31.9072209389\n",
"X Y is :\n",
"4864890.9488 -7418.48195362\n",
"Distance to Line01, Distance to Line21:\n",
"-162.236370824 31.723940755\n",
"X Y is :\n",
"4864937.54606 -7531.7747474\n",
"Distance to Line01, Distance to Line21:\n",
"-40.4524444173 152.879060466\n",
"X Y is :\n",
"4864928.81646 -7535.35359188\n",
"Distance to Line01, Distance to Line21:\n",
"-41.4826738407 151.473579057\n",
"X Y is :\n",
"4864937.34171 -7528.59267864\n",
"Distance to Line01, Distance to Line21:\n",
"-43.3449843416 150.042656516\n",
"X Y is :\n",
"4864937.81192 -7531.26265336\n",
"Distance to Line01, Distance to Line21:\n",
"-40.775117753 152.575828319\n",
"X Y is :\n",
"4864892.73736 -7554.13252869\n",
"Distance to Line01, Distance to Line21:\n",
"-42.238131927 149.087948868\n",
"X Y is :\n",
"4864886.07516 -7557.70498433\n",
"Distance to Line01, Distance to Line21:\n",
"-42.2855647054 148.737412205\n",
"X Y is :\n",
"4864878.95305 -7566.7864634\n",
"Distance to Line01, Distance to Line21:\n",
"-37.7142482394 152.880091868\n",
"X Y is :\n",
"4864811.25328 -7329.33911254\n",
"Distance to Line01, Distance to Line21:\n",
"-278.633226239 -85.6772059208\n",
"X Y is :\n",
"4864782.27922 -7361.71781283\n",
"Distance to Line01, Distance to Line21:\n",
"-264.047016569 -72.7439964821\n",
"X Y is :\n",
"4864818.52994 -7345.65929108\n",
"Distance to Line01, Distance to Line21:\n",
"-260.820143562 -67.9350507095\n",
"X Y is :\n",
"4864831.99523 -7354.02804143\n",
"Distance to Line01, Distance to Line21:\n",
"-247.032131689 -53.8443124238\n",
"X Y is :\n",
"4864833.2265 -7355.23491964\n",
"Distance to Line01, Distance to Line21:\n",
"-245.383457847 -52.1767363044\n",
"X Y is :\n",
"4864802.47869 -7324.01639609\n",
"Distance to Line01, Distance to Line21:\n",
"-287.503285259 -94.7471338504\n",
"X Y is :\n",
"4864798.26431 -7356.92994089\n",
"Distance to Line01, Distance to Line21:\n",
"-260.609883778 -68.6548209963\n",
"X Y is :\n",
"4864806.16124 -7362.75910838\n",
"Distance to Line01, Distance to Line21:\n",
"-251.714607399 -59.6003179347\n",
"X Y is :\n",
"4864796.99974 -7361.2276114\n",
"Distance to Line01, Distance to Line21:\n",
"-257.439784109 -65.6142062767\n",
"X Y is :\n",
"4864794.45566 -7352.03470602\n",
"Distance to Line01, Distance to Line21:\n",
"-266.730304735 -74.8106123653\n",
"X Y is :\n",
"4864782.7502 -7341.07293486\n",
"Distance to Line01, Distance to Line21:\n",
"-281.954426313 -90.2246081947\n",
"X Y is :\n",
"4864803.72198 -7363.0630511\n",
"Distance to Line01, Distance to Line21:\n",
"-252.613842088 -60.5905699128\n",
"X Y is :\n",
"4864797.80909 -7362.38560868\n",
"Distance to Line01, Distance to Line21:\n",
"-256.035759649 -64.2050061046\n",
"X Y is :\n",
"4864800.56166 -7362.68577464\n",
"Distance to Line01, Distance to Line21:\n",
"-254.456137545 -62.5354607244\n",
"X Y is :\n",
"4864791.06706 -7359.39258391\n",
"Distance to Line01, Distance to Line21:\n",
"-261.887880996 -70.2325001114\n",
"X Y is :\n",
"4864793.31737 -7359.6091578\n",
"Distance to Line01, Distance to Line21:\n",
"-260.621803456 -68.8923344862\n",
"X Y is :\n",
"4864762.01007 -7346.4381965\n",
"Distance to Line01, Distance to Line21:\n",
"-287.157785363 -96.2571372005\n",
"X Y is :\n",
"4864760.38155 -7344.79781037\n",
"Distance to Line01, Distance to Line21:\n",
"-289.377132623 -98.5006078503\n",
"X Y is :\n",
"4864762.46071 -7347.35093484\n",
"Distance to Line01, Distance to Line21:\n",
"-286.140668654 -95.2424654674\n",
"X Y is :\n",
"4864766.73289 -7361.87208694\n",
"Distance to Line01, Distance to Line21:\n",
"-271.344108188 -80.585736306\n",
"X Y is :\n",
"4864761.32295 -7348.19572137\n",
"Distance to Line01, Distance to Line21:\n",
"-285.942638495 -95.1008640398\n",
"X Y is :\n",
"4864817.94662 -7386.13238555\n",
"Distance to Line01, Distance to Line21:\n",
"-225.551135043 -33.490909887\n",
"X Y is :\n",
"4864821.36854 -7385.11312856\n",
"Distance to Line01, Distance to Line21:\n",
"-224.810360117 -32.6106653877\n",
"X Y is :\n",
"4864824.16551 -7383.03333561\n",
"Distance to Line01, Distance to Line21:\n",
"-225.299848104 -32.9613730314\n",
"X Y is :\n",
"4864813.53844 -7383.32455953\n",
"Distance to Line01, Distance to Line21:\n",
"-230.124795895 -38.1623213601\n",
"X Y is :\n",
"4864811.85515 -7378.74201717\n",
"Distance to Line01, Distance to Line21:\n",
"-234.954453325 -42.9595245163\n",
"X Y is :\n",
"4864766.88289 -7339.08273865\n",
"Distance to Line01, Distance to Line21:\n",
"-291.288485509 -100.07186857\n",
"X Y is :\n",
"4864762.2316 -7339.86046377\n",
"Distance to Line01, Distance to Line21:\n",
"-292.829155733 -101.790034322\n",
"X Y is :\n",
"4864780.67968 -7365.29843536\n",
"Distance to Line01, Distance to Line21:\n",
"-261.666849138 -70.49072902\n",
"X Y is :\n",
"4864776.24518 -7344.69789192\n",
"Distance to Line01, Distance to Line21:\n",
"-281.880598413 -90.4494521012\n",
"X Y is :\n",
"4864911.32054 -7639.06808341\n",
"Distance to Line01, Distance to Line21:\n",
"41.246031278 231.531090525\n",
"X Y is :\n",
"4864911.52397 -7639.35807544\n",
"Distance to Line01, Distance to Line21:\n",
"41.5979929599 231.884374436\n",
"X Y is :\n",
"4864911.44406 -7639.36093973\n",
"Distance to Line01, Distance to Line21:\n",
"41.5623064074 231.845847307\n",
"1111\n"
]
}
],
"source": [
"testn=0\n",
"yBLD=[]\n",
"for i in rsltdf.index:\n",
" x = rsltdf['yLAT'][i]\n",
" y=rsltdf['yLONG'][i]\n",
" ## Calculate the distance to the boundary between buildings 0 and 1\n",
" d01=wf.distance(bounds[-2],x,y)\n",
" ## Calculate the distance to the boundary between buildings 1 and 2\n",
" d21=wf.distance(bounds[-1],x,y)\n",
" ## Predict Building 0, 1 or 2\n",
" \n",
" ## If the distances to line d01 and line d21 are both positive, \n",
" ## the building is 0\n",
" if (d01>=0)&(d21>=0):\n",
" yBLD.append(0)\n",
" else:\n",
" ## If the distance to line d01 is negative and \n",
" ## the distonce to line d21 is positive, \n",
" ## the building is 1\n",
" if (d01<=0)&(d21>=0):\n",
" yBLD.append(1)\n",
" \n",
" else:\n",
" ## If the distances to line d01 and line d21 are both negative, \n",
" ## the building is 2\n",
" if (d01<0)&(d21<0):\n",
" yBLD.append(2)\n",
" # Assign a -1 if no other categories are captured\n",
" else:\n",
" yBLD.append(-1)\n",
" print \"X Y is :\"\n",
" print x,y\n",
" print \"Distance to Line01, Distance to Line21:\"\n",
" print d01, d21\n",
" testn+=1\n",
" #if testn>4:\n",
" #break\n",
" \n",
"print testn"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\Brian\\Miniconda2\\lib\\site-packages\\ipykernel\\__main__.py:1: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" if __name__ == '__main__':\n",
"C:\\Users\\Brian\\Miniconda2\\lib\\site-packages\\ipykernel\\__main__.py:2: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" from ipykernel import kernelapp as app\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>LONGITUDE</th>\n",
" <th>LATITUDE</th>\n",
" <th>FLOOR</th>\n",
" <th>yLONG</th>\n",
" <th>yLAT</th>\n",
" <th>yFLOOR</th>\n",
" <th>LONGdelta</th>\n",
" <th>LATdelta</th>\n",
" <th>yBLD</th>\n",
" <th>BUILDINGID</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>-7515.916799</td>\n",
" <td>4.864890e+06</td>\n",
" <td>1</td>\n",
" <td>-7484.139857</td>\n",
" <td>4.864889e+06</td>\n",
" <td>0.893345</td>\n",
" <td>31.776943</td>\n",
" <td>-1.152647</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-7383.867221</td>\n",
" <td>4.864840e+06</td>\n",
" <td>4</td>\n",
" <td>-7329.148363</td>\n",
" <td>4.864811e+06</td>\n",
" <td>3.837592</td>\n",
" <td>54.718858</td>\n",
" <td>-28.372357</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>-7374.302080</td>\n",
" <td>4.864847e+06</td>\n",
" <td>4</td>\n",
" <td>-7327.811924</td>\n",
" <td>4.864812e+06</td>\n",
" <td>3.845482</td>\n",
" <td>46.490156</td>\n",
" <td>-34.928036</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>-7365.824883</td>\n",
" <td>4.864843e+06</td>\n",
" <td>4</td>\n",
" <td>-7332.369440</td>\n",
" <td>4.864811e+06</td>\n",
" <td>3.801760</td>\n",
" <td>33.455442</td>\n",
" <td>-31.918688</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>-7641.499303</td>\n",
" <td>4.864922e+06</td>\n",
" <td>2</td>\n",
" <td>-7640.975171</td>\n",
" <td>4.864913e+06</td>\n",
" <td>1.814536</td>\n",
" <td>0.524132</td>\n",
" <td>-9.493216</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" LONGITUDE LATITUDE FLOOR yLONG yLAT yFLOOR \\\n",
"0 -7515.916799 4.864890e+06 1 -7484.139857 4.864889e+06 0.893345 \n",
"1 -7383.867221 4.864840e+06 4 -7329.148363 4.864811e+06 3.837592 \n",
"2 -7374.302080 4.864847e+06 4 -7327.811924 4.864812e+06 3.845482 \n",
"3 -7365.824883 4.864843e+06 4 -7332.369440 4.864811e+06 3.801760 \n",
"4 -7641.499303 4.864922e+06 2 -7640.975171 4.864913e+06 1.814536 \n",
"\n",
" LONGdelta LATdelta yBLD BUILDINGID \n",
"0 31.776943 -1.152647 1 1 \n",
"1 54.718858 -28.372357 2 2 \n",
"2 46.490156 -34.928036 2 2 \n",
"3 33.455442 -31.918688 2 2 \n",
"4 0.524132 -9.493216 0 0 "
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rsltdf['yBLD']=yBLD\n",
"rsltdf['BUILDINGID']=testdf['BUILDINGID']\n",
"rsltdf.head()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"1.0"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## Check the accuracy score of the Building ID Prediction\n",
"accuracy_score(rsltdf['BUILDINGID'], rsltdf['yBLD'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# The Building ID is predicted to an accuracy of 100 %"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now check the distribution of floor values."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\Brian\\Miniconda2\\lib\\site-packages\\ipykernel\\__main__.py:2: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" from ipykernel import kernelapp as app\n"
]
},
{
"data": {
"text/plain": [
"count 1111.000000\n",
"mean 0.110828\n",
"std 0.486240\n",
"min -1.107813\n",
"5% -0.393518\n",
"10% -0.217704\n",
"25% -0.055357\n",
"50% 0.013420\n",
"75% 0.074848\n",
"90% 0.709333\n",
"95% 1.048929\n",
"max 2.976410\n",
"Name: FLOORdelta, dtype: float64"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x136bd4e0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\n",
"rsltdf['FLOORdelta']=(rsltdf['yFLOOR']-rsltdf['FLOOR'])\n",
"##See distribution of errors for Longitude\n",
"plt.hist(rsltdf['FLOORdelta'], bins=range(-4, 4,1))\n",
"rsltdf['FLOORdelta'].describe(percentiles=[.05,.1,.25,.5,.75,.9,.95])\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This shows that the predictions of floor are usually within 1 floor of the actual value."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"## Backup Results to csv file\n",
"rsltdf.to_csv('data/test_results201707.csv')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Improve upon the Floor Prediction\n",
"To improve upon the floor prediction, we will use a few different classifiers."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Backup df and get 1000 observation subset\n",
"dfbckup = df\n",
"dfs = df.sample(n=1000,random_state = 123)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"############################################\n",
"2017-07-28 13:11:03.746000\n",
"Classifier is Nearest Neighbors \n",
"0.811881188119\n",
"############################################\n",
"2017-07-28 13:11:04.421000\n",
"Classifier is Linear SVM \n",
"0.836183618362\n",
"############################################\n",
"2017-07-28 13:11:04.991000\n",
"Classifier is RBF SVM \n",
"0.41404140414\n",
"############################################\n",
"2017-07-28 13:11:07.032000\n",
"Classifier is Gaussian Process \n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\Brian\\Miniconda2\\lib\\site-packages\\sklearn\\gaussian_process\\gpc.py:409: RuntimeWarning: overflow encountered in exp\n",
" - np.log(np.diag(L)).sum()\n",
"C:\\Users\\Brian\\Miniconda2\\lib\\site-packages\\sklearn\\gaussian_process\\gpc.py:391: RuntimeWarning: overflow encountered in exp\n",
" pi = 1 / (1 + np.exp(-f))\n",
"C:\\Users\\Brian\\Miniconda2\\lib\\site-packages\\sklearn\\gaussian_process\\gpc.py:413: RuntimeWarning: invalid value encountered in double_scalars\n",
" if lml - log_marginal_likelihood < 1e-10:\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.401440144014\n",
"############################################\n",
"2017-07-28 13:12:18.328000\n",
"Classifier is Decision Tree \n",
"0.437443744374\n",
"############################################\n",
"2017-07-28 13:12:18.359000\n",
"Classifier is Random Forest \n",
"0.495949594959\n",
"############################################\n",
"2017-07-28 13:12:18.415000\n",
"Classifier is Neural Net \n",
"0.88298829883\n",
"############################################\n",
"2017-07-28 13:12:19.070000\n",
"Classifier is AdaBoost \n",
"0.435643564356\n",
"############################################\n",
"2017-07-28 13:12:19.397000\n",
"Classifier is Naive Bayes \n",
"0.482448244824\n",
"############################################\n",
"2017-07-28 13:12:19.455000\n",
"Classifier is QDA \n",
"0.298829882988\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\Brian\\Miniconda2\\lib\\site-packages\\sklearn\\discriminant_analysis.py:695: UserWarning: Variables are collinear\n",
" warnings.warn(\"Variables are collinear\")\n"
]
}
],
"source": [
"##Try various classifiers with 1000 observation subset of data\n",
"\n",
"names = [\"Nearest Neighbors\", \"Linear SVM\", \"RBF SVM\", \"Gaussian Process\",\n",
" \"Decision Tree\", \"Random Forest\", \"Neural Net\", \"AdaBoost\",\n",
" \"Naive Bayes\", \"QDA\"]\n",
"\n",
"classifiers = [\n",
" KNeighborsClassifier(3),\n",
" SVC(kernel=\"linear\", C=0.025),\n",
" SVC(gamma=2, C=1),\n",
" GaussianProcessClassifier(1.0 * RBF(1.0), warm_start=True),\n",
" DecisionTreeClassifier(max_depth=5),\n",
" RandomForestClassifier(max_depth=5, n_estimators=10, max_features=1),\n",
" MLPClassifier(alpha=1),\n",
" AdaBoostClassifier(),\n",
" GaussianNB(),\n",
" QuadraticDiscriminantAnalysis()]\n",
"\n",
"X=df[WAPcols]\n",
"y=df['FLOOR']\n",
"\n",
"for name, clf in zip(names, classifiers):\n",
" print \"############################################\"\n",
" print(datetime.now())\n",
" print \"Classifier is %s \" % name\n",
" clf.fit(dfs[WAPcols], dfs['FLOOR'])\n",
" y_pred = clf.predict(testdf[WAPcols])\n",
" print accuracy_score(testdf['FLOOR'], y_pred)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Based on the above, the most promsing classifiers are KNN, Linear SVM and Neural Net.\n",
"Next, explore these in more depth"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Create KNN Classifier"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=1, p=2,\n",
" weights='uniform')"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"knn = KNeighborsClassifier(n_neighbors=1)\n",
"knn"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"X=df[WAPcols]\n",
"y=df['FLOOR']"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=1, p=2,\n",
" weights='uniform')"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"knn.fit(X,y)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>WAP001</th>\n",
" <th>WAP002</th>\n",
" <th>WAP003</th>\n",
" <th>WAP004</th>\n",
" <th>WAP005</th>\n",
" <th>WAP006</th>\n",
" <th>WAP007</th>\n",
" <th>WAP008</th>\n",
" <th>WAP009</th>\n",
" <th>WAP010</th>\n",
" <th>...</th>\n",
" <th>WAP511</th>\n",
" <th>WAP512</th>\n",
" <th>WAP513</th>\n",
" <th>WAP514</th>\n",
" <th>WAP515</th>\n",
" <th>WAP516</th>\n",
" <th>WAP517</th>\n",
" <th>WAP518</th>\n",
" <th>WAP519</th>\n",
" <th>WAP520</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 520 columns</p>\n",
"</div>"
],
"text/plain": [
" WAP001 WAP002 WAP003 WAP004 WAP005 WAP006 WAP007 WAP008 WAP009 \\\n",
"0 0.0 0 0.0 0.0 0 0 0 0.0 0.0 \n",
"1 0.0 0 0.0 0.0 0 0 0 0.0 0.0 \n",
"2 0.0 0 0.0 0.0 0 0 0 0.0 0.0 \n",
"3 0.0 0 0.0 0.0 0 0 0 0.0 0.0 \n",
"4 0.0 0 0.0 0.0 0 0 0 0.0 0.0 \n",
"\n",
" WAP010 ... WAP511 WAP512 WAP513 WAP514 WAP515 WAP516 WAP517 \\\n",
"0 0.0 ... 0 0 0 0 0 0 0 \n",
"1 0.0 ... 0 0 0 0 0 0 0 \n",
"2 0.0 ... 0 0 0 0 0 0 0 \n",
"3 0.0 ... 0 0 0 0 0 0 0 \n",
"4 0.0 ... 0 0 0 0 0 0 0 \n",
"\n",
" WAP518 WAP519 WAP520 \n",
"0 0 0 0.0 \n",
"1 0 0 0.0 \n",
"2 0 0 0.0 \n",
"3 0 0 0.0 \n",
"4 0 0 0.0 \n",
"\n",
"[5 rows x 520 columns]"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"testdf[WAPcols].head()"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0 1\n",
"1 4\n",
"2 4\n",
"3 4\n",
"4 2\n",
"Name: FLOOR, dtype: int64"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"testdf['FLOOR'].head()"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"## Predict from validation set\n",
"test_pred = knn.predict(testdf[WAPcols])"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.89468946894689472"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## Check the accuracy score of the Building ID Prediction\n",
"accuracy_score(testdf['FLOOR'], test_pred)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### We can predict the floor with an accuracy of .895 when we use KNN, and n_neighbors = 5, let's try for n_neighbors values of 2 through 8"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"########################\n",
"2017-07-28 13:12:23.839000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=2, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 2 \n",
"2017-07-28 13:12:25.325000\n",
"Start prediction\n",
"Accuracy is 0.892889288929 \n",
"########################\n",
"2017-07-28 13:12:27.743000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=3, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 3 \n",
"2017-07-28 13:12:29.313000\n",
"Start prediction\n",
"Accuracy is 0.895589558956 \n",
"########################\n",
"2017-07-28 13:12:31.937000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=4, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 4 \n",
"2017-07-28 13:12:33.403000\n",
"Start prediction\n",
"Accuracy is 0.893789378938 \n",
"########################\n",
"2017-07-28 13:12:36.318000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=5, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 5 \n",
"2017-07-28 13:12:37.726000\n",
"Start prediction\n",
"Accuracy is 0.894689468947 \n",
"########################\n",
"2017-07-28 13:12:40.667000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=6, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 6 \n",
"2017-07-28 13:12:42.111000\n",
"Start prediction\n",
"Accuracy is 0.889288928893 \n",
"########################\n",
"2017-07-28 13:12:45.375000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=7, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 7 \n",
"2017-07-28 13:12:46.867000\n",
"Start prediction\n",
"Accuracy is 0.891089108911 \n",
"########################\n",
"2017-07-28 13:12:50.021000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=8, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 8 \n",
"2017-07-28 13:12:51.495000\n",
"Start prediction\n",
"Accuracy is 0.886588658866 \n"
]
}
],
"source": [
"for i in range(2,9):\n",
" print \"########################\"\n",
" print(datetime.now())\n",
" print \"n_neighbors=i\"\n",
" knn = KNeighborsClassifier(n_neighbors=i)\n",
" print knn\n",
" knn.fit(X,y)\n",
" print \"knn fit complete for %s \" % i\n",
" print(datetime.now())\n",
" ## Predict from validation set\n",
" print \"Start prediction\"\n",
" test_pred = knn.predict(testdf[WAPcols])\n",
" ## Check the accuracy score of the Building ID Prediction\n",
" acc = accuracy_score(testdf['FLOOR'], test_pred)\n",
" print \"Accuracy is %s \" % acc\n",
" \n",
" "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Optimal n_neighbors values appears to be 5, yielding an accuracy of .896 Next, try to improve results by having a different model for each building. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Try Neural Network\n"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"MLPClassifier(activation='relu', alpha=1e-05, batch_size='auto', beta_1=0.9,\n",
" beta_2=0.999, early_stopping=False, epsilon=1e-08,\n",
" hidden_layer_sizes=(100,), learning_rate='invscaling',\n",
" learning_rate_init=0.001, max_iter=200, momentum=0.9,\n",
" nesterovs_momentum=True, power_t=0.5, random_state=None,\n",
" shuffle=True, solver='adam', tol=0.0001, validation_fraction=0.1,\n",
" verbose=False, warm_start=False)\n",
"Random state is 123 \n",
"2017-07-28 13:12:55.225000\n",
"2017-07-28 13:13:00.656000\n",
"Accuracy is 0.888388838884 \n",
"Random state is 345 \n",
"2017-07-28 13:13:00.666000\n",
"2017-07-28 13:13:03.108000\n",
"Accuracy is 0.892889288929 \n",
"Random state is 579 \n",
"2017-07-28 13:13:03.119000\n",
"2017-07-28 13:13:04.650000\n",
"Accuracy is 0.892889288929 \n",
"Random state is 113 \n",
"2017-07-28 13:13:04.661000\n",
"2017-07-28 13:13:11.065000\n",
"Accuracy is 0.891089108911 \n",
"Average Accuracy is 0.891314131413 \n"
]
}
],
"source": [
"nnc=MLPClassifier(alpha=.00001,hidden_layer_sizes=(100,),learning_rate='invscaling' )\n",
"print nnc\n",
"avg_acc =0\n",
"for r in [123,345,579,113]:\n",
" nnc.random_state =r \n",
" print \"Random state is %s \" % nnc.random_state\n",
" print datetime.now()\n",
" nnc.fit(X,y)\n",
" print datetime.now()\n",
" \n",
" ## Predict from validation set\n",
" test_pred = nnc.predict(testdf[WAPcols])\n",
" \n",
" ## Check the accuracy score of the Building ID Prediction\n",
" acc=accuracy_score(testdf['FLOOR'], test_pred)\n",
" print \"Accuracy is %s \" % acc\n",
" avg_acc += acc\n",
" \n",
"print \"Average Accuracy is %s \" % (avg_acc/4.0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The best combination for MLPClassifier uses the parameters :\n",
"\n",
"alpha=.00001\n",
"\n",
"hidden_layer_sizes=(100,)\n",
"\n",
"learning_rate='invscaling' )\n",
"\n",
"This gives an average accuracy of .891, which is not as good as KNN which returns .896 accuracy."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## NOTE: Linear SVC ran for 2 hours without completing when fitting to the full data set, so it was not able to be used."
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"## Predict from validation set\n",
"test_pred = nnc.predict(testdf[WAPcols])"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.8910891089108911"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## Check the accuracy score of the Building ID Prediction\n",
"accuracy_score(testdf['FLOOR'], test_pred)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Getting Floor Predictions by Building\n",
"To optimze the models further, we estimated the floor by using a different model for each building. This is done with the theory that floors are different from building to building."
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# First, put predicted building into the testdf\n",
"# Need to measure accuracy using the predicted building. Using the actual building would be cheating\n",
"testdf['yBLD']=rsltdf['yBLD']"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"## Create dataframes for only building zero\n",
"df0=df[df['BUILDINGID']==0]\n",
"testdf0=testdf[testdf['yBLD']==0]\n",
"\n",
"## Create dataframes for only building one\n",
"df1=df[df['BUILDINGID']==1]\n",
"testdf1=testdf[testdf['yBLD']==1]\n",
"\n",
"## Create dataframes for only building two\n",
"df2=df[df['BUILDINGID']==2]\n",
"testdf2=testdf[testdf['yBLD']==2]\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Create model for Building Zero"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"########################\n",
"2017-07-28 13:13:11.469000\n",
"n_neighbors= 1 \n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=1, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 1 \n",
"2017-07-28 13:13:11.632000\n",
"Start prediction\n",
"Accuracy is 0.891791044776 \n",
"########################\n",
"2017-07-28 13:13:12.215000\n",
"n_neighbors= 2 \n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=2, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 2 \n",
"2017-07-28 13:13:12.364000\n",
"Start prediction\n",
"Accuracy is 0.886194029851 \n",
"########################\n",
"2017-07-28 13:13:12.957000\n",
"n_neighbors= 3 \n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=3, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 3 \n",
"2017-07-28 13:13:13.105000\n",
"Start prediction\n",
"Accuracy is 0.901119402985 \n",
"########################\n",
"2017-07-28 13:13:13.730000\n",
"n_neighbors= 4 \n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=4, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 4 \n",
"2017-07-28 13:13:13.878000\n",
"Start prediction\n",
"Accuracy is 0.89552238806 \n",
"########################\n",
"2017-07-28 13:13:14.530000\n",
"n_neighbors= 5 \n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=5, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 5 \n",
"2017-07-28 13:13:14.703000\n",
"Start prediction\n",
"Accuracy is 0.891791044776 \n",
"########################\n",
"2017-07-28 13:13:15.479000\n",
"n_neighbors= 6 \n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=6, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 6 \n",
"2017-07-28 13:13:15.652000\n",
"Start prediction\n",
"Accuracy is 0.891791044776 \n",
"########################\n",
"2017-07-28 13:13:16.377000\n",
"n_neighbors= 7 \n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=7, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 7 \n",
"2017-07-28 13:13:16.534000\n",
"Start prediction\n",
"Accuracy is 0.897388059701 \n",
"########################\n",
"2017-07-28 13:13:17.225000\n",
"n_neighbors= 8 \n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=8, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 8 \n",
"2017-07-28 13:13:17.377000\n",
"Start prediction\n",
"Accuracy is 0.886194029851 \n"
]
}
],
"source": [
"## Check accuracy for n_neighbors 1 through 8\n",
"X=df0[WAPcols]\n",
"y=df0['FLOOR']\n",
"\n",
"for i in range(1,9):\n",
" print \"########################\"\n",
" print(datetime.now())\n",
" print \"n_neighbors= %s \" % i\n",
" knn = KNeighborsClassifier(n_neighbors=i)\n",
" print knn\n",
" knn.fit(X,y)\n",
" print \"knn fit complete for %s \" % i\n",
" print(datetime.now())\n",
" ## Predict from validation set\n",
" print \"Start prediction\"\n",
" test_pred = knn.predict(testdf0[WAPcols])\n",
" ## Check the accuracy score of the Building ID Prediction\n",
" acc = accuracy_score(testdf0['FLOOR'], test_pred)\n",
" print \"Accuracy is %s \" % acc\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Prediction improves from 89.6 to 90.1 for n_neighbors = 3, and isolating the model to Building 0\n",
"\n",
"### Now repeat for Building 1"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"########################\n",
"2017-07-28 13:13:18.109000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=1, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 1 \n",
"2017-07-28 13:13:18.266000\n",
"Start prediction\n",
"Accuracy is 0.85993485342 \n",
"########################\n",
"2017-07-28 13:13:18.444000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=2, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 2 \n",
"2017-07-28 13:13:18.595000\n",
"Start prediction\n",
"Accuracy is 0.866449511401 \n",
"########################\n",
"2017-07-28 13:13:18.783000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=3, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 3 \n",
"2017-07-28 13:13:18.936000\n",
"Start prediction\n",
"Accuracy is 0.85342019544 \n",
"########################\n",
"2017-07-28 13:13:19.130000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=4, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 4 \n",
"2017-07-28 13:13:19.280000\n",
"Start prediction\n",
"Accuracy is 0.85667752443 \n",
"########################\n",
"2017-07-28 13:13:19.475000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=5, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 5 \n",
"2017-07-28 13:13:19.622000\n",
"Start prediction\n",
"Accuracy is 0.85667752443 \n",
"########################\n",
"2017-07-28 13:13:19.840000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=6, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 6 \n",
"2017-07-28 13:13:19.987000\n",
"Start prediction\n",
"Accuracy is 0.840390879479 \n",
"########################\n",
"2017-07-28 13:13:20.199000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=7, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 7 \n",
"2017-07-28 13:13:20.352000\n",
"Start prediction\n",
"Accuracy is 0.840390879479 \n",
"########################\n",
"2017-07-28 13:13:20.580000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=8, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 8 \n",
"2017-07-28 13:13:20.737000\n",
"Start prediction\n",
"Accuracy is 0.840390879479 \n"
]
}
],
"source": [
"## Create dataframes for only building zero\n",
"df1=df[df['BUILDINGID']==1]\n",
"testdf1=testdf[testdf['yBLD']==1]\n",
"\n",
"## Check accuracy for n_neighbors 1 through 8\n",
"X=df1[WAPcols]\n",
"y=df1['FLOOR']\n",
"\n",
"for i in range(1,9):\n",
" print \"########################\"\n",
" print(datetime.now())\n",
" print \"n_neighbors=i\"\n",
" knn = KNeighborsClassifier(n_neighbors=i)\n",
" print knn\n",
" knn.fit(X,y)\n",
" print \"knn fit complete for %s \" % i\n",
" print(datetime.now())\n",
" ## Predict from validation set\n",
" print \"Start prediction\"\n",
" test_pred = knn.predict(testdf1[WAPcols])\n",
" ## Check the accuracy score of the Building ID Prediction\n",
" acc = accuracy_score(testdf1['FLOOR'], test_pred)\n",
" print \"Accuracy is %s \" % acc"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"## The best case is n_neighbors = 2. Accuracy goes down to 86.6% which is less than that when evaluating everything at once. However, let's compare this score to the result when we apply the overall model to building 1. "
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"########################\n",
"2017-07-28 13:13:21.050000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=1, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 1 \n",
"2017-07-28 13:13:22.468000\n",
"Start prediction\n",
"Accuracy is 0.85993485342 \n",
"########################\n",
"2017-07-28 13:13:22.844000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=2, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 2 \n",
"2017-07-28 13:13:24.265000\n",
"Start prediction\n",
"Accuracy is 0.866449511401 \n",
"########################\n",
"2017-07-28 13:13:24.692000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=3, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 3 \n",
"2017-07-28 13:13:26.165000\n",
"Start prediction\n",
"Accuracy is 0.85342019544 \n",
"########################\n",
"2017-07-28 13:13:26.597000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=4, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 4 \n",
"2017-07-28 13:13:28.024000\n",
"Start prediction\n",
"Accuracy is 0.85667752443 \n",
"########################\n",
"2017-07-28 13:13:28.465000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=5, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 5 \n",
"2017-07-28 13:13:29.900000\n",
"Start prediction\n",
"Accuracy is 0.85667752443 \n",
"########################\n",
"2017-07-28 13:13:30.368000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=6, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 6 \n",
"2017-07-28 13:13:32.004000\n",
"Start prediction\n",
"Accuracy is 0.840390879479 \n",
"########################\n",
"2017-07-28 13:13:32.495000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=7, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 7 \n",
"2017-07-28 13:13:33.953000\n",
"Start prediction\n",
"Accuracy is 0.840390879479 \n",
"########################\n",
"2017-07-28 13:13:34.445000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=8, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 8 \n",
"2017-07-28 13:13:35.925000\n",
"Start prediction\n",
"Accuracy is 0.840390879479 \n"
]
}
],
"source": [
"## Create dataframes for only building zero\n",
"df1=df[df['BUILDINGID']==1]\n",
"testdf1=testdf[testdf['yBLD']==1]\n",
"\n",
"## Check accuracy for n_neighbors 1 through 8\n",
"X=df[WAPcols]\n",
"y=df['FLOOR']\n",
"\n",
"for i in range(1,9):\n",
" print \"########################\"\n",
" print(datetime.now())\n",
" print \"n_neighbors=i\"\n",
" knn = KNeighborsClassifier(n_neighbors=i)\n",
" print knn\n",
" knn.fit(X,y)\n",
" print \"knn fit complete for %s \" % i\n",
" print(datetime.now())\n",
" ## Predict from validation set\n",
" print \"Start prediction\"\n",
" test_pred = knn.predict(testdf1[WAPcols])\n",
" ## Check the accuracy score of the Building ID Prediction\n",
" acc = accuracy_score(testdf1['FLOOR'], test_pred)\n",
" print \"Accuracy is %s \" % acc"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"## Results are very similar, but slightly better when using the Building 1 Model"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
},
"source": [
"# Repeat for Building 2"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"########################\n",
"2017-07-28 13:13:36.532000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=1, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 1 \n",
"2017-07-28 13:13:36.871000\n",
"Start prediction\n",
"Accuracy is 0.940298507463 \n",
"########################\n",
"2017-07-28 13:13:37.477000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=2, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 2 \n",
"2017-07-28 13:13:37.795000\n",
"Start prediction\n",
"Accuracy is 0.936567164179 \n",
"########################\n",
"2017-07-28 13:13:38.441000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=3, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 3 \n",
"2017-07-28 13:13:38.766000\n",
"Start prediction\n",
"Accuracy is 0.932835820896 \n",
"########################\n",
"2017-07-28 13:13:39.447000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=4, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 4 \n",
"2017-07-28 13:13:39.771000\n",
"Start prediction\n",
"Accuracy is 0.932835820896 \n",
"########################\n",
"2017-07-28 13:13:40.462000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=5, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 5 \n",
"2017-07-28 13:13:40.794000\n",
"Start prediction\n",
"Accuracy is 0.940298507463 \n",
"########################\n",
"2017-07-28 13:13:41.564000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=6, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 6 \n",
"2017-07-28 13:13:41.895000\n",
"Start prediction\n",
"Accuracy is 0.936567164179 \n",
"########################\n",
"2017-07-28 13:13:42.632000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=7, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 7 \n",
"2017-07-28 13:13:42.980000\n",
"Start prediction\n",
"Accuracy is 0.940298507463 \n",
"########################\n",
"2017-07-28 13:13:43.799000\n",
"n_neighbors=i\n",
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=1, n_neighbors=8, p=2,\n",
" weights='uniform')\n",
"knn fit complete for 8 \n",
"2017-07-28 13:13:44.137000\n",
"Start prediction\n",
"Accuracy is 0.940298507463 \n"
]
}
],
"source": [
"## Create dataframes for only building zero\n",
"df2=df[df['BUILDINGID']==2]\n",
"testdf2=testdf[testdf['yBLD']==2]\n",
"\n",
"## Check accuracy for n_neighbors 1 through 8\n",
"X=df2[WAPcols]\n",
"y=df2['FLOOR']\n",
"\n",
"for i in range(1,9):\n",
" print \"########################\"\n",
" print(datetime.now())\n",
" print \"n_neighbors=i\"\n",
" knn = KNeighborsClassifier(n_neighbors=i)\n",
" print knn\n",
" knn.fit(X,y)\n",
" print \"knn fit complete for %s \" % i\n",
" print(datetime.now())\n",
" ## Predict from validation set\n",
" print \"Start prediction\"\n",
" test_pred = knn.predict(testdf2[WAPcols])\n",
" ## Check the accuracy score of the Building ID Prediction\n",
" acc = accuracy_score(testdf2['FLOOR'], test_pred)\n",
" print \"Accuracy is %s \" % acc"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"# For Building 2 - accuracy is 94.0% for n=1, which is the highest improvement in accuracy."
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"268\n"
]
}
],
"source": [
"print len(testdf2['WAP001'])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [conda root]",
"language": "python",
"name": "conda-root-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.13"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment