mirror of https://github.com/CGAL/cgal
Move the experimental package into the feature branch. They are
coupled tightly enough to have them in one branch.
This commit is contained in:
parent
da6f1be1d2
commit
2ab6d66698
|
|
@ -3235,6 +3235,75 @@ Polyhedron/examples/Polyhedron/corner.off -text svneol=unset#application/octet-s
|
|||
Polyhedron/examples/Polyhedron/corner_with_hole.off -text svneol=unset#application/octet-stream
|
||||
Polyhedron/examples/Polyhedron/corner_with_sharp_edge.off -text svneol=unset#application/octet-stream
|
||||
Polyhedron/examples/Polyhedron/cross.off -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/Polyline_simplification_2.qrc -text
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/Polyline_simplification_2.ui -text
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/about_Polyline_simplification_2.html svneol=native#text/html
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/data/all_crossed.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/data/bee.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/data/ksan_0.osm -text
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/data/ksan_1.osm -text
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/data/ksan_2.osm -text
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/data/letter_G.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/data/letter_P.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/data/letter_T.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/data/letter_c.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/data/letter_d.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/data/letter_q.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/data/letter_u.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/data/letters_cd.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/data/map_1.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/data/map_2.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/data/map_3.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/data/maps.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/data/norway.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/data/san.osm -text
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/data/test_ksan.osm -text
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/icons/triangulation.pdf -text svneol=unset#application/pdf
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/icons/triangulation.png -text svneol=unset#image/png
|
||||
Polyline_simplification_2/demo/Polyline_simplification_2/include/CGAL/Qt/TriangulationArrangementGraphicsItem.h -text
|
||||
Polyline_simplification_2/doc_tex/Polyline_simplification_2/PkgDescription.tex -text
|
||||
Polyline_simplification_2/doc_tex/Polyline_simplification_2/Polyline_simplification_2.tex -text
|
||||
Polyline_simplification_2/doc_tex/Polyline_simplification_2/main.tex -text
|
||||
Polyline_simplification_2/doc_tex/Polyline_simplification_2/maxDist.png -text svneol=unset#image/png
|
||||
Polyline_simplification_2/doc_tex/Polyline_simplification_2/norway.png -text svneol=unset#image/png
|
||||
Polyline_simplification_2/doc_tex/Polyline_simplification_2/platelet.png -text svneol=unset#image/png
|
||||
Polyline_simplification_2/doc_tex/Polyline_simplification_2/scaledAndHybridMaxDist.png -text svneol=unset#image/png
|
||||
Polyline_simplification_2/doc_tex/Polyline_simplification_2_ref/Hybrid_squared_distance_cost.tex -text
|
||||
Polyline_simplification_2/doc_tex/Polyline_simplification_2_ref/PolylineSimplificationCostFunction.tex -text
|
||||
Polyline_simplification_2/doc_tex/Polyline_simplification_2_ref/PolylineSimplificationStopPredicate.tex -text
|
||||
Polyline_simplification_2/doc_tex/Polyline_simplification_2_ref/Scaled_squared_distance_cost.tex -text
|
||||
Polyline_simplification_2/doc_tex/Polyline_simplification_2_ref/Squared_distance_cost.tex -text
|
||||
Polyline_simplification_2/doc_tex/Polyline_simplification_2_ref/Stop_above_cost_threshold.tex -text
|
||||
Polyline_simplification_2/doc_tex/Polyline_simplification_2_ref/Stop_below_count_ratio_threshold.tex -text
|
||||
Polyline_simplification_2/doc_tex/Polyline_simplification_2_ref/Stop_below_count_threshold.tex -text
|
||||
Polyline_simplification_2/doc_tex/Polyline_simplification_2_ref/intro.tex -text
|
||||
Polyline_simplification_2/doc_tex/Polyline_simplification_2_ref/main.tex -text
|
||||
Polyline_simplification_2/examples/Polyline_simplification_2/Polyline_simplification_2_basic_example.cpp -text
|
||||
Polyline_simplification_2/examples/Polyline_simplification_2/Polyline_simplification_2_example_from_original.cpp -text
|
||||
Polyline_simplification_2/examples/Polyline_simplification_2/Polyline_simplification_2_example_with_visitor.cpp -text
|
||||
Polyline_simplification_2/include/CGAL/Polyline_simplification_2/reference_manual_concepts/CostFunction_concept.h -text
|
||||
Polyline_simplification_2/include/CGAL/Polyline_simplification_2/reference_manual_concepts/PolylineNode_concept.h -text
|
||||
Polyline_simplification_2/include/CGAL/Polyline_simplification_2/reference_manual_concepts/StopPredicate_concept.h -text
|
||||
Polyline_simplification_2/include/CGAL/Polyline_simplification_2/reference_manual_concepts/Vertex_concept.h -text
|
||||
Polyline_simplification_2/include/CGAL/Polyline_simplification_2/reference_manual_concepts/Visitor_concept.h -text
|
||||
Polyline_simplification_2/test/Polyline_simplification_2/data/bee.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/test/Polyline_simplification_2/data/hole.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/test/Polyline_simplification_2/data/large_2.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/test/Polyline_simplification_2/data/large_3.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/test/Polyline_simplification_2/data/large_4.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/test/Polyline_simplification_2/data/letter_G.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/test/Polyline_simplification_2/data/letter_P.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/test/Polyline_simplification_2/data/letter_T.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/test/Polyline_simplification_2/data/letter_c.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/test/Polyline_simplification_2/data/letter_d.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/test/Polyline_simplification_2/data/letter_q.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/test/Polyline_simplification_2/data/letter_u.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/test/Polyline_simplification_2/data/norway.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/test/Polyline_simplification_2/data/rectangle.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/test/Polyline_simplification_2/data/single_reflex.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/test/Polyline_simplification_2/data/square.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/test/Polyline_simplification_2/data/star.poly -text svneol=unset#application/octet-stream
|
||||
Polyline_simplification_2/test/Polyline_simplification_2/data/triangle.poly -text svneol=unset#application/octet-stream
|
||||
Polynomial/doc_tex/Polynomial/Polynomial.png -text
|
||||
Polynomial/doc_tex/Polynomial_ref/PolynomialTraits_d_ConstructCoefficientConstIteratorRange.tex -text
|
||||
Polynomial/doc_tex/Polynomial_ref/PolynomialTraits_d_ConstructInnermostCoefficientConstIteratorRange.tex -text
|
||||
|
|
|
|||
|
|
@ -0,0 +1,71 @@
|
|||
# Created by the script cgal_create_cmake_script
|
||||
# This is the CMake script for compiling a CGAL application.
|
||||
|
||||
# ** DEVELOPMENT** CMakeLists.txt..
|
||||
# It requires the env var $CGAL_SVN with the location of a svn working copy
|
||||
# And $CGAL_DIR with the location of a CGAL installation
|
||||
|
||||
project (Polyline_simplification_2)
|
||||
|
||||
cmake_minimum_required(VERSION 2.4.5)
|
||||
|
||||
set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
|
||||
|
||||
if ( COMMAND cmake_policy )
|
||||
cmake_policy( SET CMP0003 NEW )
|
||||
endif()
|
||||
|
||||
find_package(CGAL COMPONENTS Qt4)
|
||||
|
||||
include(${CGAL_USE_FILE})
|
||||
|
||||
set( QT_USE_QTXML TRUE )
|
||||
set( QT_USE_QTMAIN TRUE )
|
||||
set( QT_USE_QTSCRIPT TRUE )
|
||||
set( QT_USE_QTOPENGL TRUE )
|
||||
|
||||
find_package(Qt4)
|
||||
|
||||
if ( NOT CGAL_SVN )
|
||||
set( CGAL_SVN_env "$ENV{CGAL_SVN}" )
|
||||
if ( NOT "${CGAL_SVN_env}" STREQUAL "" )
|
||||
set( CGAL_SVN ${CGAL_SVN_env} CACHE FILEPATH "Location of the CGAL svn working copy" )
|
||||
else()
|
||||
set( CGAL_SVN "NOTFOUND" CACHE FILEPATH "Location of the CGAL svn working copy" )
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include_directories (BEFORE ../../../../../trunk/GraphicsView/include)
|
||||
|
||||
# include_directories (BEFORE ${CGAL_SVN}/GraphicsView/include)
|
||||
include_directories (BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||
include_directories (BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/../../include )
|
||||
include_directories (BEFORE ${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
if ( CGAL_FOUND AND CGAL_Qt4_FOUND AND QT4_FOUND )
|
||||
|
||||
include(${QT_USE_FILE})
|
||||
|
||||
# UI files (Qt Designer files)
|
||||
qt4_wrap_ui( CDT_UI_FILES Polyline_simplification_2.ui )
|
||||
|
||||
# qrc files (resources files, that contain icons, at least)
|
||||
qt4_add_resources ( CDT_RESOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/Polyline_simplification_2.qrc )
|
||||
|
||||
# use the Qt MOC preprocessor on classes that derives from QObject
|
||||
qt4_generate_moc( ${CMAKE_CURRENT_SOURCE_DIR}/Polyline_simplification_2.cpp Polyline_simplification_2.moc )
|
||||
|
||||
# The executable itself.
|
||||
add_executable ( Polyline_simplification_2 ${CMAKE_CURRENT_SOURCE_DIR}/Polyline_simplification_2.cpp Polyline_simplification_2.moc ${CDT_UI_FILES} ${CDT_RESOURCE_FILES} )
|
||||
|
||||
# Link with Qt libraries
|
||||
target_link_libraries( Polyline_simplification_2 ${QT_LIBRARIES} )
|
||||
|
||||
# Link with CGAL
|
||||
target_link_libraries( Polyline_simplification_2 ${CGAL_LIBRARIES} ${CGAL_3RD_PARTY_LIBRARIES})
|
||||
|
||||
else()
|
||||
|
||||
message(STATUS "NOTICE: This demo requires CGAL and Qt4, and will not be compiled.")
|
||||
|
||||
endif()
|
||||
|
|
@ -0,0 +1,547 @@
|
|||
//#define CGAL_USE_BOOST_BIMAP
|
||||
|
||||
#include <fstream>
|
||||
#include <vector>
|
||||
|
||||
// CGAL headers
|
||||
#include <CGAL/Bbox_2.h>
|
||||
#include <CGAL/assertions_behaviour.h>
|
||||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||
#include <CGAL/Timer.h>
|
||||
|
||||
//#define CGAL_TESTING_POLYLINE_SIMPLIFICATION
|
||||
//#define CGAL_POLYLINE_SIMPLIFICATION_TRACE_LEVEL 15
|
||||
|
||||
bool lAppToLog = false ;
|
||||
void Polyline_simplification_2_external_trace( std::string m )
|
||||
{
|
||||
std::ofstream out("polysim_log.txt", ( lAppToLog ? std::ios::app | std::ios::ate : std::ios::trunc | std::ios::ate ) );
|
||||
out << std::setprecision(19) << m << std::endl << std::flush ;
|
||||
lAppToLog = true ;
|
||||
}
|
||||
|
||||
void error_handler ( char const* what, char const* expr, char const* file, int line, char const* msg )
|
||||
{
|
||||
std::cerr << "CGAL error: " << what << " violation!" << std::endl
|
||||
<< "Expr: " << expr << std::endl
|
||||
<< "File: " << file << std::endl
|
||||
<< "Line: " << line << std::endl;
|
||||
if ( msg != 0)
|
||||
std::cerr << "Explanation:" << msg << std::endl;
|
||||
|
||||
throw std::runtime_error("CGAL Error");
|
||||
}
|
||||
|
||||
|
||||
#include <CGAL/Constrained_Delaunay_triangulation_2.h>
|
||||
#include <CGAL/Polyline_constrained_triangulation_2.h>
|
||||
#include <CGAL/Polyline_simplification_2/simplify.h>
|
||||
|
||||
// Qt headers
|
||||
#include <QtGui>
|
||||
#include <QString>
|
||||
#include <QActionGroup>
|
||||
#include <QFileDialog>
|
||||
#include <QInputDialog>
|
||||
#include <QDragEnterEvent>
|
||||
#include <QDropEvent>
|
||||
#include <QSlider>
|
||||
#include <QProgressBar>
|
||||
|
||||
// GraphicsView items and event filters (input classes)
|
||||
#include <CGAL/Qt/GraphicsViewPolylineInput.h>
|
||||
#include <CGAL/Qt/Polyline_simplification_2_graphics_item.h>
|
||||
#include <CGAL/Qt/Converter.h>
|
||||
|
||||
// the two base classes
|
||||
#include "ui_Polyline_simplification_2.h"
|
||||
#include <CGAL/Qt/DemosMainWindow.h>
|
||||
|
||||
// for viewportsBbox(QGraphicsScene*)
|
||||
#include <CGAL/Qt/utility.h>
|
||||
|
||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||
|
||||
typedef K::Point_2 Point_2;
|
||||
typedef K::Segment_2 Segment_2;
|
||||
typedef K::Iso_rectangle_2 Iso_rectangle_2;
|
||||
|
||||
typedef CGAL::Triangulation_vertex_base_2<K> Vb;
|
||||
typedef CGAL::Constrained_triangulation_face_base_2<K> Fb;
|
||||
typedef CGAL::Triangulation_data_structure_2<Vb,Fb> TDS;
|
||||
typedef CGAL::Exact_predicates_tag Itag;
|
||||
typedef CGAL::Constrained_Delaunay_triangulation_2<K,TDS, Itag> CDT;
|
||||
typedef CGAL::Polyline_constrained_triangulation_2<CDT> PCT;
|
||||
|
||||
namespace PS2 = CGAL::Polyline_simplification_2 ;
|
||||
|
||||
enum Mode { ABS_P, ABS_E, REL_P, REL_E, MIXED_P, MIXED_E } ;
|
||||
|
||||
class MainWindow :
|
||||
public CGAL::Qt::DemosMainWindow,
|
||||
public Ui::Polyline_simplification_2
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
|
||||
PCT m_pct;
|
||||
QGraphicsScene mScene;
|
||||
CGAL::Qt::PolylineSimplificationGraphicsItem<PCT> * mGI;
|
||||
CGAL::Qt::GraphicsViewPolylineInput<K> * mPI;
|
||||
|
||||
private:
|
||||
|
||||
public:
|
||||
|
||||
MainWindow();
|
||||
|
||||
protected:
|
||||
void dragEnterEvent(QDragEnterEvent *event);
|
||||
void dropEvent(QDropEvent *event);
|
||||
private:
|
||||
|
||||
void loadPoly(QString);
|
||||
void loadOSM (QString);
|
||||
|
||||
protected slots:
|
||||
void open(QString);
|
||||
|
||||
public slots:
|
||||
|
||||
void processInput(CGAL::Object o);
|
||||
|
||||
void on_actionShowTriangulation_toggled(bool checked);
|
||||
|
||||
void on_actionInsertPolyline_toggled(bool checked);
|
||||
|
||||
void on_actionClear_triggered();
|
||||
|
||||
void on_actionRecenter_triggered();
|
||||
|
||||
void on_actionLoadConstraints_triggered();
|
||||
|
||||
void on_actionSimplify_triggered();
|
||||
|
||||
Mode getSimplificationMode() ;
|
||||
|
||||
double getThreshold() ;
|
||||
|
||||
signals:
|
||||
void changed();
|
||||
};
|
||||
|
||||
|
||||
MainWindow::MainWindow()
|
||||
: DemosMainWindow()
|
||||
{
|
||||
CGAL::set_error_handler (error_handler);
|
||||
CGAL::set_warning_handler(error_handler);
|
||||
|
||||
setupUi(this);
|
||||
|
||||
setAcceptDrops(true);
|
||||
|
||||
// Add a GraphicItem for the PS triangulation
|
||||
mGI = new CGAL::Qt::PolylineSimplificationGraphicsItem<PCT>(&m_pct);
|
||||
|
||||
QObject::connect(this, SIGNAL(changed()), mGI, SLOT(modelChanged()));
|
||||
|
||||
mGI->setVerticesPen(QPen(Qt::red, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
|
||||
mGI->setFixedVerticesPen(QPen(Qt::blue, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
|
||||
mGI->setZValue(-1);
|
||||
mGI->setVisibleEdges(false);
|
||||
mGI->setVisibleConstraints(true);
|
||||
|
||||
mScene.addItem(mGI);
|
||||
|
||||
// Setup input handlers. They get events before the mScene gets them
|
||||
// and the input they generate is passed to the triangulation with
|
||||
// the signal/slot mechanism
|
||||
mPI = new CGAL::Qt::GraphicsViewPolylineInput<K>(this, &mScene, 0, true); // inputs polylines which are not closed
|
||||
|
||||
QObject::connect(mPI, SIGNAL(generate(CGAL::Object)), this, SLOT(processInput(CGAL::Object)));
|
||||
|
||||
|
||||
//
|
||||
// Manual handling of actions
|
||||
//
|
||||
QObject::connect(this->actionQuit, SIGNAL(triggered()), this, SLOT(close()));
|
||||
|
||||
// We put mutually exclusive actions in an QActionGroup
|
||||
QActionGroup* ag = new QActionGroup(this);
|
||||
ag->addAction(this->actionInsertPolyline);
|
||||
|
||||
this->actionShowTriangulation->setChecked(false);
|
||||
|
||||
//
|
||||
// Setup the mScene and the view
|
||||
//
|
||||
mScene.setItemIndexMethod(QGraphicsScene::NoIndex);
|
||||
mScene.setSceneRect(-100, -100, 100, 100);
|
||||
this->graphicsView->setScene(&mScene);
|
||||
this->graphicsView->setMouseTracking(true);
|
||||
|
||||
// Turn the vertical axis upside down
|
||||
this->graphicsView->scale(1, -1);
|
||||
|
||||
// The navigation adds zooming and translation functionality to the
|
||||
// QGraphicsView
|
||||
this->addNavigation(this->graphicsView);
|
||||
|
||||
this->setupStatusBar();
|
||||
this->setupOptionsMenu();
|
||||
this->addAboutDemo(":/cgal/help/about_Polyline_simplification_2.html");
|
||||
this->addAboutCGAL();
|
||||
|
||||
this->addRecentFiles(this->menuFile, this->actionQuit);
|
||||
connect(this, SIGNAL(openRecentFile(QString)), this, SLOT(open(QString)));
|
||||
|
||||
// QObject::connect(thresholdSlider, SIGNAL(valueChanged(int)), this, SLOT(set_Threshold(int)));
|
||||
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
MainWindow::dragEnterEvent(QDragEnterEvent *event)
|
||||
{
|
||||
if (event->mimeData()->hasFormat("text/uri-list"))
|
||||
event->acceptProposedAction();
|
||||
}
|
||||
|
||||
void
|
||||
MainWindow::dropEvent(QDropEvent *event)
|
||||
{
|
||||
QString filename = event->mimeData()->urls().at(0).path();
|
||||
open(filename);
|
||||
event->acceptProposedAction();
|
||||
}
|
||||
|
||||
void
|
||||
MainWindow::processInput(CGAL::Object o)
|
||||
{
|
||||
std::list<Point_2> points;
|
||||
if(CGAL::assign(points, o))
|
||||
{
|
||||
if(points.size() >= 2)
|
||||
{
|
||||
m_pct.insert_constraint(points.begin(), points.end());
|
||||
emit(changed());
|
||||
}
|
||||
}
|
||||
emit(changed());
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Qt Automatic Connections
|
||||
* http://doc.trolltech.com/4.4/designer-using-a-component.html#automatic-connections
|
||||
*
|
||||
* setupUi(this) generates connections to the slots named
|
||||
* "on_<action_name>_<signal_name>"
|
||||
*/
|
||||
void
|
||||
MainWindow::on_actionInsertPolyline_toggled(bool checked)
|
||||
{
|
||||
if(checked){
|
||||
mScene.installEventFilter(mPI);
|
||||
} else {
|
||||
mScene.removeEventFilter(mPI);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MainWindow::on_actionShowTriangulation_toggled(bool checked)
|
||||
{
|
||||
mGI->setVisibleEdges(checked);
|
||||
update();
|
||||
}
|
||||
|
||||
void
|
||||
MainWindow::on_actionClear_triggered()
|
||||
{
|
||||
m_pct.clear();
|
||||
mGI->modelChanged();
|
||||
emit(changed());
|
||||
}
|
||||
|
||||
Mode MainWindow::getSimplificationMode()
|
||||
{
|
||||
bool lP = rbuttonPercentage->isChecked();
|
||||
int lError = rbuttonAbsError ->isChecked() ? 0 : ( rbuttonRelError ->isChecked() ? 1 : 2 ) ;
|
||||
|
||||
return lP ? lError == 0 ? ABS_P : ( lError == 1 ? REL_P : MIXED_P )
|
||||
: lError == 0 ? ABS_E : ( lError == 1 ? REL_E : MIXED_E ) ;
|
||||
}
|
||||
|
||||
double MainWindow::getThreshold()
|
||||
{
|
||||
double lValue = this->textValue->text().toDouble() ;
|
||||
return rbuttonPercentage->isChecked() ? lValue / 100.0
|
||||
: rbuttonAbsError->isChecked() ? lValue * lValue
|
||||
: lValue ;
|
||||
}
|
||||
|
||||
void MainWindow::on_actionSimplify_triggered()
|
||||
{
|
||||
// wait cursor
|
||||
QApplication::setOverrideCursor(Qt::WaitCursor);
|
||||
|
||||
PS2::mark_vertices_unremovable(m_pct);
|
||||
try
|
||||
{
|
||||
switch( getSimplificationMode() )
|
||||
{
|
||||
case ABS_P : simplify(m_pct, PS2::Squared_distance_cost(), PS2::Stop_below_count_ratio_threshold(getThreshold()) ) ;
|
||||
break ;
|
||||
case ABS_E : simplify(m_pct, PS2::Squared_distance_cost(), PS2::Stop_above_cost_threshold(getThreshold()) ) ; break ;
|
||||
case REL_P : simplify(m_pct, PS2::Scaled_squared_distance_cost(), PS2::Stop_below_count_ratio_threshold(getThreshold()) ) ; break ;
|
||||
case REL_E : simplify(m_pct, PS2::Scaled_squared_distance_cost(), PS2::Stop_above_cost_threshold(getThreshold()) ) ; break ;
|
||||
case MIXED_P : simplify(m_pct, PS2::Hybrid_squared_distance_cost<double>(1.0), PS2::Stop_below_count_ratio_threshold(getThreshold())) ; break ;
|
||||
case MIXED_E : simplify(m_pct, PS2::Hybrid_squared_distance_cost<double>(1.0), PS2::Stop_above_cost_threshold(getThreshold())) ; break ;
|
||||
|
||||
break ;
|
||||
}
|
||||
|
||||
statusBar()->showMessage(QString("Simplification done"));
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
statusBar()->showMessage(QString("Exception ocurred"));
|
||||
}
|
||||
|
||||
// default cursor
|
||||
QApplication::restoreOverrideCursor();
|
||||
mGI->modelChanged();
|
||||
emit(changed());
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
MainWindow::open(QString fileName)
|
||||
{
|
||||
if(! fileName.isEmpty()){
|
||||
if(fileName.endsWith(".poly")){
|
||||
loadPoly(fileName);
|
||||
this->addToRecentFiles(fileName);
|
||||
}
|
||||
else if(fileName.endsWith(".osm")){
|
||||
loadOSM(fileName);
|
||||
this->addToRecentFiles(fileName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MainWindow::on_actionLoadConstraints_triggered()
|
||||
{
|
||||
QString fileName = QFileDialog::getOpenFileName(this,
|
||||
tr("Open Constraint File"),
|
||||
"../data",
|
||||
tr("Polylines (*.osm *.poly)")
|
||||
);
|
||||
open(fileName);
|
||||
}
|
||||
|
||||
std::string trim_right ( std::string str )
|
||||
{
|
||||
if ( str.length() > 0 )
|
||||
{
|
||||
std::size_t pos = str.find_last_not_of( " " ) ;
|
||||
if ( pos != std::string::npos )
|
||||
return str.substr(0,pos+1);
|
||||
}
|
||||
|
||||
return std::string("") ;
|
||||
}
|
||||
|
||||
enum { POLYGON, POLYLINE, POINT } ;
|
||||
|
||||
void MainWindow::loadPoly(QString fileName)
|
||||
{
|
||||
m_pct.clear();
|
||||
mGI->modelChanged();
|
||||
|
||||
std::ifstream ifs(qPrintable(fileName));
|
||||
|
||||
std::string line ;
|
||||
|
||||
std::vector<Point_2> poly ;
|
||||
|
||||
bool lIsClosed = true ;
|
||||
|
||||
while ( std::getline(ifs,line) )
|
||||
{
|
||||
line = trim_right(line);
|
||||
|
||||
if ( line.size() > 0 )
|
||||
{
|
||||
int lCode = POINT ;
|
||||
|
||||
if ( line == "POLYGON" )
|
||||
{
|
||||
lCode = POLYGON ;
|
||||
lIsClosed = true ;
|
||||
}
|
||||
else if ( line == "POLYLINE" )
|
||||
{
|
||||
lCode = POLYLINE ;
|
||||
lIsClosed = false ;
|
||||
}
|
||||
|
||||
if ( lCode == POINT )
|
||||
{
|
||||
double x,y ;
|
||||
|
||||
std::istringstream ss(line);
|
||||
|
||||
ss >> x >> y ;
|
||||
|
||||
poly.push_back( Point_2(x,y) );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( poly.size() > 0 )
|
||||
{
|
||||
if ( lIsClosed )
|
||||
{
|
||||
if(poly.back() != poly.front()){
|
||||
poly.push_back(poly.front());
|
||||
}
|
||||
m_pct.insert_constraint(poly.begin(), poly.end() ) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pct.insert_constraint(poly.begin(), poly.end() ) ;
|
||||
}
|
||||
}
|
||||
poly.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( poly.size() > 0 )
|
||||
{
|
||||
if ( lIsClosed )
|
||||
{
|
||||
if(poly.back() != poly.front()){
|
||||
poly.push_back(poly.front());
|
||||
}
|
||||
m_pct.insert_constraint(poly.begin(), poly.end() ) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pct.insert_constraint(poly.begin(), poly.end() ) ;
|
||||
}
|
||||
}
|
||||
|
||||
emit(changed());
|
||||
|
||||
actionRecenter->trigger();
|
||||
}
|
||||
|
||||
void MainWindow::loadOSM(QString fileName)
|
||||
{
|
||||
m_pct.clear();
|
||||
mGI->modelChanged();
|
||||
|
||||
try
|
||||
{
|
||||
std::ifstream ifs(qPrintable(fileName));
|
||||
|
||||
std::string line ;
|
||||
|
||||
std::vector<Point_2> poly ;
|
||||
|
||||
bool lIsClosed = true ;
|
||||
|
||||
while ( std::getline(ifs,line) )
|
||||
{
|
||||
line = trim_right(line);
|
||||
|
||||
if ( line.size() > 0 )
|
||||
{
|
||||
if ( line.find(':') != std::string::npos )
|
||||
{
|
||||
if ( poly.size() > 0 )
|
||||
{
|
||||
if ( poly.front() == poly.back() && poly.size() >= 4 )
|
||||
{
|
||||
if ( is_simple_2(poly.begin(), poly.end() - 1) )
|
||||
m_pct.insert_constraint(poly.begin(), poly.end() - 1 ) ;
|
||||
}
|
||||
else if ( poly.size() >= 2 )
|
||||
{
|
||||
if ( is_simple_2(poly.begin(), poly.end()) )
|
||||
m_pct.insert_constraint(poly.begin(), poly.end() ) ;
|
||||
}
|
||||
}
|
||||
poly.clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
double x,y ;
|
||||
|
||||
std::string::size_type pos = line.find(',');
|
||||
if ( pos != std::string::npos )
|
||||
line[pos]= ' ' ;
|
||||
|
||||
std::istringstream ss(line);
|
||||
|
||||
ss >> x >> y ;
|
||||
|
||||
poly.push_back( Point_2(x,y) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( poly.size() > 0 )
|
||||
{
|
||||
if ( poly.front() == poly.back() )
|
||||
{
|
||||
m_pct.insert_constraint(poly.begin(), poly.end() - 1 ) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pct.insert_constraint(poly.begin(), poly.end() ) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
statusBar()->showMessage(QString("Exception ocurred"));
|
||||
}
|
||||
|
||||
emit(changed());
|
||||
|
||||
actionRecenter->trigger();
|
||||
}
|
||||
|
||||
void
|
||||
MainWindow::on_actionRecenter_triggered()
|
||||
{
|
||||
this->graphicsView->setSceneRect(mGI->boundingRect());
|
||||
this->graphicsView->fitInView(mGI->boundingRect(), Qt::KeepAspectRatio);
|
||||
}
|
||||
|
||||
#include "Polyline_simplification_2.moc"
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
QApplication app(argc, argv);
|
||||
|
||||
app.setOrganizationDomain("geometryfactory.com");
|
||||
app.setOrganizationName("GeometryFactory");
|
||||
app.setApplicationName("Polyline_simplification_2 demo");
|
||||
|
||||
// Import resources from libCGALQt4.
|
||||
// See http://doc.trolltech.com/4.4/qdir.html#Q_INIT_RESOURCE
|
||||
Q_INIT_RESOURCE(File);
|
||||
Q_INIT_RESOURCE(Triangulation_2);
|
||||
Q_INIT_RESOURCE(Input);
|
||||
Q_INIT_RESOURCE(CGAL);
|
||||
|
||||
MainWindow mainWindow;
|
||||
mainWindow.show();
|
||||
return app.exec();
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<RCC>
|
||||
<qresource prefix="/cgal/Actions" >
|
||||
<file>icons/triangulation.png</file>
|
||||
</qresource>
|
||||
<qresource prefix="/cgal/help" lang="en" >
|
||||
<file>about_Polyline_simplification_2.html</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
|
@ -0,0 +1,290 @@
|
|||
<ui version="4.0" >
|
||||
<author>GeometryFactory</author>
|
||||
<class>Polyline_simplification_2</class>
|
||||
<widget class="QMainWindow" name="Polyline_simplification_2" >
|
||||
<property name="geometry" >
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>1000</width>
|
||||
<height>600</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle" >
|
||||
<string>CGAL Polyline Simplification</string>
|
||||
</property>
|
||||
<property name="windowIcon" >
|
||||
<iconset resource="../resources/CGAL.qrc" >
|
||||
<normaloff>:/cgal/logos/cgal_icon</normaloff>:/cgal/logos/cgal_icon</iconset>
|
||||
</property>
|
||||
<widget class="QStatusBar" name="statusbar" >
|
||||
</widget>
|
||||
<widget class="QToolBar" name="fileToolBar" >
|
||||
<property name="windowTitle" >
|
||||
<string>File Tools</string>
|
||||
</property>
|
||||
<attribute name="toolBarArea" >
|
||||
<enum>TopToolBarArea</enum>
|
||||
</attribute>
|
||||
<attribute name="toolBarBreak" >
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<addaction name="actionClear" />
|
||||
<addaction name="actionLoadConstraints" />
|
||||
</widget>
|
||||
<widget class="QWidget" name="centralwidget" >
|
||||
<layout class="QGridLayout" >
|
||||
<item row="0" column="0" >
|
||||
<widget class="QGraphicsView" name="graphicsView" >
|
||||
<property name="focusPolicy" >
|
||||
<enum>Qt::StrongFocus</enum>
|
||||
</property>
|
||||
<property name="verticalScrollBarPolicy" >
|
||||
<enum>Qt::ScrollBarAlwaysOn</enum>
|
||||
</property>
|
||||
<property name="horizontalScrollBarPolicy" >
|
||||
<enum>Qt::ScrollBarAlwaysOn</enum>
|
||||
</property>
|
||||
<property name="transformationAnchor" >
|
||||
<enum>QGraphicsView::NoAnchor</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
|
||||
|
||||
<widget class="QToolBar" name="toolBar" >
|
||||
<property name="windowTitle" >
|
||||
<string>Visualization Tools</string>
|
||||
</property>
|
||||
<attribute name="toolBarArea" >
|
||||
<enum>TopToolBarArea</enum>
|
||||
</attribute>
|
||||
<attribute name="toolBarBreak" >
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<addaction name="separator" />
|
||||
<addaction name="actionShowTriangulation" />
|
||||
<addaction name="actionInsertPolyline" />
|
||||
<addaction name="separator" />
|
||||
<addaction name="actionSimplify" />
|
||||
<addaction name="separator" />
|
||||
<addaction name="actionRecenter" />
|
||||
<widget class="QLabel" name="textCaption" >
|
||||
<property name="text">
|
||||
<string>Error or % value:</string>
|
||||
</property>
|
||||
</widget>
|
||||
<addaction name="separator" />
|
||||
<widget class="QLineEdit" name="textValue" >
|
||||
<property name="text">
|
||||
<string>50</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget class="QToolBar" name="StopCondToolBar" >
|
||||
<attribute name="toolBarArea" >
|
||||
<enum>TopToolBarArea</enum>
|
||||
</attribute>
|
||||
<attribute name="toolBarBreak" >
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<widget class="QRadioButton" name="rbuttonPercentage" >
|
||||
<property name="checked" >
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Stop at %</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QRadioButton" name="rbuttonError" >
|
||||
<property name="text">
|
||||
<string>Stop at Error</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget class="QToolBar" name="ErrTypeToolBar" >
|
||||
<attribute name="toolBarArea" >
|
||||
<enum>TopToolBarArea</enum>
|
||||
</attribute>
|
||||
<attribute name="toolBarBreak" >
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
<widget class="QRadioButton" name="rbuttonAbsError" >
|
||||
<property name="checked" >
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Abs</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QRadioButton" name="rbuttonRelError" >
|
||||
<property name="text">
|
||||
<string>Rel</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QRadioButton" name="rbuttonHybrid" >
|
||||
<property name="text">
|
||||
<string>Mixed</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
<widget class="QMenuBar" name="menubar" >
|
||||
<property name="geometry" >
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>19</height>
|
||||
</rect>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuFile" >
|
||||
<property name="title" >
|
||||
<string>&File</string>
|
||||
</property>
|
||||
<addaction name="separator" />
|
||||
<addaction name="actionClear" />
|
||||
<addaction name="actionLoadConstraints" />
|
||||
<addaction name="separator" />
|
||||
<addaction name="actionQuit" />
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuTools" >
|
||||
<property name="title" >
|
||||
<string>&Tools</string>
|
||||
</property>
|
||||
<addaction name="actionShowTriangulation" />
|
||||
<addaction name="actionInsertPolyline" />
|
||||
<addaction name="separator" />
|
||||
<addaction name="actionSimplify" />
|
||||
<addaction name="separator" />
|
||||
<addaction name="actionRecenter" />
|
||||
</widget>
|
||||
<addaction name="menuFile" />
|
||||
<addaction name="menuEdit" />
|
||||
<addaction name="menuTools" />
|
||||
</widget>
|
||||
<action name="actionAbout" >
|
||||
<property name="text" >
|
||||
<string>&About</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionAboutCGAL" >
|
||||
<property name="text" >
|
||||
<string>About &CGAL</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionQuit" >
|
||||
<property name="text" >
|
||||
<string>&Quit</string>
|
||||
</property>
|
||||
<property name="shortcut" >
|
||||
<string>Ctrl+Q</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionInsertPolyline" >
|
||||
<property name="checkable" >
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="checked" >
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="icon" >
|
||||
<iconset resource="../icons/Input.qrc" >
|
||||
<normaloff>:/cgal/Input/inputPolyline.png</normaloff>:/cgal/Input/inputPolyline.png</iconset>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<string>&Insert Polyline</string>
|
||||
</property>
|
||||
<property name="toolTip" >
|
||||
<string>Insert Point or Polyline</string>
|
||||
</property>
|
||||
<property name="statusTip" >
|
||||
<string>Left: Insert vtx | Right: Final vtx | Del: Delete vtx</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionClear" >
|
||||
<property name="icon" >
|
||||
<iconset resource="../icons/File.qrc" >
|
||||
<normaloff>:/cgal/fileToolbar/fileNew.png</normaloff>:/cgal/fileToolbar/fileNew.png</iconset>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<string>&Clear</string>
|
||||
</property>
|
||||
<property name="shortcut" >
|
||||
<string>Ctrl+C</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionShowTriangulation" >
|
||||
<property name="checkable" >
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="icon" >
|
||||
<iconset resource="Polyline_simplification_2.qrc" >
|
||||
<normaloff>:/cgal/Actions/icons/triangulation.png</normaloff>:/cgal/Actions/icons/triangulation.png
|
||||
</iconset>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<string>Show &triangulation</string>
|
||||
</property>
|
||||
<property name="shortcut" >
|
||||
<string>Ctrl+T</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionLoadConstraints" >
|
||||
<property name="icon" >
|
||||
<iconset resource="../icons/File.qrc" >
|
||||
<normaloff>:/cgal/fileToolbar/fileOpen.png</normaloff>:/cgal/fileToolbar/fileOpen.png</iconset>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<string>&Load...</string>
|
||||
</property>
|
||||
<property name="shortcut" >
|
||||
<string>Ctrl+L</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionRecenter" >
|
||||
<property name="icon" >
|
||||
<iconset resource="../icons/Input.qrc" >
|
||||
<normaloff>:/cgal/Input/zoom-best-fit</normaloff>:/cgal/Input/zoom-best-fit</iconset>
|
||||
</property>
|
||||
<property name="text" >
|
||||
<string>Re&center the viewport</string>
|
||||
</property>
|
||||
<property name="shortcut" >
|
||||
<string>Ctrl+R</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionSimplify" >
|
||||
<property name="text" >
|
||||
<string>Simplify polylines</string>
|
||||
</property>
|
||||
<property name="shortcut" >
|
||||
<string>Ctrl+S</string>
|
||||
</property>
|
||||
</action>
|
||||
|
||||
|
||||
</widget>
|
||||
<resources>
|
||||
<include location="Polyline_simplification_2.qrc" />
|
||||
<include location="../icons/File.qrc" />
|
||||
<include location="../resources/CGAL.qrc" />
|
||||
<include location="../icons/Triangulation_2.qrc" />
|
||||
<include location="../icons/Input.qrc" />
|
||||
</resources>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>thresholdSlider</sender>
|
||||
<signal>valueChanged(int)</signal>
|
||||
<receiver>MainWindow</receiver>
|
||||
<slot>setThreshold(int)</slot>
|
||||
</connection>
|
||||
</connections>
|
||||
<slots>
|
||||
<slot>setThreshold(int)</slot>
|
||||
</slots>
|
||||
</ui>
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
<html>
|
||||
<body>
|
||||
<h2>Constrained Delaunay Triangulation</h2>
|
||||
<p>Copyright © 2008 GeometryFactory</p>
|
||||
<p>This application illustrates the 2D Constrained Delaunay
|
||||
of <a href="http://www.cgal.org/">CGAL</a>.</p>
|
||||
<p>See also <a href="http://www.cgal.org/Pkg/Triangulation2">the online
|
||||
manual</a>.</p>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,983 @@
|
|||
POLYGON
|
||||
355.500 113.000
|
||||
347.000 104.800
|
||||
338.100 97.200
|
||||
328.800 90.300
|
||||
319.100 84.000
|
||||
309.100 78.300
|
||||
298.900 73.300
|
||||
288.400 68.900
|
||||
277.800 65.100
|
||||
267.000 62.000
|
||||
256.200 59.400
|
||||
245.300 57.500
|
||||
234.400 56.200
|
||||
223.600 55.400
|
||||
212.700 55.300
|
||||
202.000 55.700
|
||||
191.500 56.600
|
||||
181.000 58.100
|
||||
170.800 60.200
|
||||
160.800 62.700
|
||||
151.000 65.800
|
||||
141.600 69.400
|
||||
132.400 73.400
|
||||
123.500 77.900
|
||||
115.000 82.900
|
||||
106.800 88.200
|
||||
99.000 94.000
|
||||
91.600 100.200
|
||||
84.700 106.700
|
||||
78.100 113.500
|
||||
72.100 120.700
|
||||
66.400 128.200
|
||||
61.300 135.900
|
||||
56.600 143.900
|
||||
52.400 152.200
|
||||
48.700 160.600
|
||||
45.500 169.200
|
||||
42.800 177.900
|
||||
40.600 186.700
|
||||
38.900 195.600
|
||||
37.700 204.600
|
||||
37.000 213.600
|
||||
36.800 222.600
|
||||
37.200 231.500
|
||||
38.000 240.400
|
||||
39.300 249.100
|
||||
41.100 257.700
|
||||
43.300 266.100
|
||||
46.000 274.300
|
||||
49.200 282.200
|
||||
52.800 289.800
|
||||
56.800 297.100
|
||||
61.200 304.000
|
||||
66.000 310.500
|
||||
71.900 319.100
|
||||
78.300 327.300
|
||||
85.000 335.000
|
||||
92.100 342.300
|
||||
99.600 349.000
|
||||
107.300 355.300
|
||||
115.400 361.100
|
||||
123.700 366.400
|
||||
132.300 371.100
|
||||
141.100 375.400
|
||||
150.000 379.100
|
||||
159.200 382.300
|
||||
168.400 384.900
|
||||
177.800 387.100
|
||||
187.300 388.700
|
||||
196.800 389.800
|
||||
206.400 390.400
|
||||
216.000 390.500
|
||||
225.600 390.200
|
||||
235.100 389.300
|
||||
244.600 388.000
|
||||
253.900 386.200
|
||||
263.200 383.900
|
||||
272.300 381.300
|
||||
281.300 378.200
|
||||
290.100 374.800
|
||||
298.600 371.000
|
||||
306.900 366.900
|
||||
315.000 362.400
|
||||
322.800 357.700
|
||||
330.200 352.700
|
||||
337.400 347.500
|
||||
344.100 342.100
|
||||
350.500 336.500
|
||||
342.700 331.600
|
||||
335.100 326.500
|
||||
327.500 321.300
|
||||
320.000 316.000
|
||||
312.600 310.600
|
||||
305.300 305.000
|
||||
298.100 299.300
|
||||
291.000 293.500
|
||||
286.600 303.100
|
||||
281.400 312.000
|
||||
275.400 320.000
|
||||
268.900 327.200
|
||||
261.800 333.500
|
||||
254.300 338.900
|
||||
246.500 343.400
|
||||
238.400 346.900
|
||||
230.100 349.600
|
||||
221.800 351.200
|
||||
213.400 352.000
|
||||
205.100 351.700
|
||||
197.000 350.600
|
||||
189.000 348.500
|
||||
181.400 345.600
|
||||
174.000 341.700
|
||||
167.000 337.000
|
||||
160.400 331.500
|
||||
154.300 325.300
|
||||
148.800 318.200
|
||||
143.800 310.500
|
||||
139.400 302.200
|
||||
135.600 293.300
|
||||
132.400 283.900
|
||||
130.000 274.000
|
||||
128.200 263.700
|
||||
127.200 253.200
|
||||
127.000 242.400
|
||||
127.400 231.400
|
||||
128.700 220.400
|
||||
130.700 209.500
|
||||
133.400 198.700
|
||||
136.900 188.100
|
||||
141.200 177.900
|
||||
146.200 168.200
|
||||
152.000 159.000
|
||||
159.400 149.600
|
||||
167.100 141.100
|
||||
175.000 133.600
|
||||
183.200 126.900
|
||||
191.600 121.100
|
||||
200.100 116.200
|
||||
208.800 112.200
|
||||
217.600 109.100
|
||||
226.500 106.700
|
||||
235.300 105.200
|
||||
244.200 104.600
|
||||
253.000 104.700
|
||||
261.700 105.700
|
||||
270.300 107.400
|
||||
278.800 110.000
|
||||
287.100 113.300
|
||||
295.100 117.300
|
||||
303.000 122.200
|
||||
310.500 127.700
|
||||
317.700 134.000
|
||||
324.500 141.000
|
||||
330.200 134.900
|
||||
336.200 129.100
|
||||
342.400 123.500
|
||||
348.900 118.100
|
||||
POLYGON
|
||||
197.100 305.000
|
||||
197.100 67.900
|
||||
197.300 54.000
|
||||
197.500 48.800
|
||||
197.700 44.600
|
||||
198.100 41.500
|
||||
198.500 39.400
|
||||
200.000 35.000
|
||||
202.200 31.400
|
||||
205.100 28.700
|
||||
208.100 27.100
|
||||
211.900 25.800
|
||||
216.700 24.800
|
||||
222.400 24.200
|
||||
222.400 17.000
|
||||
135.700 0.000
|
||||
135.700 32.600
|
||||
131.900 28.100
|
||||
128.200 23.900
|
||||
124.500 20.100
|
||||
121.000 16.700
|
||||
117.600 13.700
|
||||
114.300 11.000
|
||||
111.100 8.700
|
||||
108.000 6.800
|
||||
103.900 4.700
|
||||
99.500 3.000
|
||||
95.000 1.700
|
||||
90.400 0.800
|
||||
85.500 0.200
|
||||
80.500 0.000
|
||||
75.000 0.200
|
||||
69.600 0.700
|
||||
64.400 1.600
|
||||
59.400 2.900
|
||||
54.500 4.500
|
||||
49.900 6.500
|
||||
45.300 8.800
|
||||
41.000 11.500
|
||||
36.800 14.600
|
||||
32.800 18.000
|
||||
29.000 21.800
|
||||
25.300 25.900
|
||||
21.800 30.400
|
||||
18.400 35.300
|
||||
15.900 39.400
|
||||
13.500 43.700
|
||||
11.400 48.100
|
||||
9.400 52.700
|
||||
7.600 57.400
|
||||
6.000 62.200
|
||||
4.600 67.200
|
||||
3.400 72.300
|
||||
2.300 77.500
|
||||
1.500 82.800
|
||||
0.800 88.300
|
||||
0.400 93.900
|
||||
0.100 99.700
|
||||
0.000 105.600
|
||||
0.100 111.100
|
||||
0.300 116.500
|
||||
0.700 121.800
|
||||
1.300 127.000
|
||||
2.000 132.100
|
||||
2.900 137.100
|
||||
3.900 142.000
|
||||
5.100 146.900
|
||||
6.400 151.600
|
||||
7.900 156.200
|
||||
9.600 160.700
|
||||
11.400 165.200
|
||||
13.800 170.300
|
||||
16.300 175.200
|
||||
19.000 179.800
|
||||
21.900 184.200
|
||||
24.900 188.300
|
||||
28.100 192.100
|
||||
31.500 195.700
|
||||
35.100 199.100
|
||||
38.800 202.100
|
||||
42.700 205.000
|
||||
47.100 207.800
|
||||
51.600 210.300
|
||||
56.200 212.400
|
||||
60.900 214.300
|
||||
65.600 215.700
|
||||
70.400 216.900
|
||||
75.300 217.700
|
||||
80.300 218.200
|
||||
85.300 218.400
|
||||
91.100 218.200
|
||||
96.500 217.500
|
||||
101.800 216.300
|
||||
106.700 214.700
|
||||
111.400 212.700
|
||||
115.200 210.500
|
||||
119.200 207.900
|
||||
123.200 204.800
|
||||
127.300 201.200
|
||||
131.500 197.200
|
||||
135.700 192.600
|
||||
135.700 262.100
|
||||
135.500 268.400
|
||||
135.200 273.700
|
||||
134.900 277.900
|
||||
134.400 281.100
|
||||
133.800 283.200
|
||||
130.500 288.800
|
||||
125.900 292.700
|
||||
122.700 294.000
|
||||
118.300 295.000
|
||||
112.800 295.600
|
||||
106.100 295.800
|
||||
106.100 305.000
|
||||
POLYGON
|
||||
132.400 171.200
|
||||
129.000 176.600
|
||||
125.400 181.200
|
||||
121.600 185.300
|
||||
117.700 188.800
|
||||
113.700 191.600
|
||||
109.500 193.800
|
||||
105.100 195.300
|
||||
100.700 196.300
|
||||
96.100 196.600
|
||||
91.000 196.100
|
||||
86.500 194.600
|
||||
82.700 192.200
|
||||
79.500 189.000
|
||||
76.700 185.100
|
||||
74.000 180.200
|
||||
71.600 174.600
|
||||
69.400 168.200
|
||||
68.500 164.900
|
||||
67.700 161.300
|
||||
67.000 157.400
|
||||
66.300 153.200
|
||||
65.800 148.700
|
||||
65.300 144.000
|
||||
64.900 138.900
|
||||
64.600 133.500
|
||||
64.400 127.800
|
||||
64.300 121.800
|
||||
64.300 109.100
|
||||
64.400 103.000
|
||||
64.600 97.200
|
||||
65.200 86.500
|
||||
65.700 81.500
|
||||
66.200 76.900
|
||||
66.800 72.500
|
||||
67.500 68.400
|
||||
68.200 64.500
|
||||
69.000 61.000
|
||||
70.000 57.700
|
||||
72.000 51.800
|
||||
74.200 46.400
|
||||
76.700 41.600
|
||||
79.400 37.400
|
||||
82.400 33.700
|
||||
85.500 30.600
|
||||
89.300 28.300
|
||||
93.900 26.900
|
||||
99.300 26.400
|
||||
103.600 26.800
|
||||
107.800 27.900
|
||||
112.000 29.800
|
||||
116.100 32.500
|
||||
120.100 35.800
|
||||
124.100 40.000
|
||||
128.000 44.800
|
||||
131.900 50.500
|
||||
135.700 56.900
|
||||
135.700 165.300
|
||||
POLYGON
|
||||
115.300 0.000
|
||||
115.300 112.700
|
||||
107.000 112.700
|
||||
99.500 112.600
|
||||
91.800 112.000
|
||||
84.000 111.100
|
||||
75.900 109.800
|
||||
67.700 108.200
|
||||
59.300 106.200
|
||||
50.700 103.800
|
||||
41.900 101.100
|
||||
32.800 98.000
|
||||
23.600 94.600
|
||||
14.100 90.900
|
||||
4.400 86.800
|
||||
0.000 94.400
|
||||
4.600 101.300
|
||||
9.700 108.100
|
||||
15.200 114.500
|
||||
21.100 120.700
|
||||
27.400 126.700
|
||||
34.200 132.400
|
||||
41.400 137.800
|
||||
49.000 143.000
|
||||
57.000 148.000
|
||||
65.400 152.600
|
||||
74.300 157.100
|
||||
83.600 161.300
|
||||
93.300 165.200
|
||||
103.400 168.900
|
||||
114.000 172.300
|
||||
112.800 181.200
|
||||
111.100 189.800
|
||||
108.800 198.300
|
||||
106.000 206.600
|
||||
102.700 214.800
|
||||
98.900 222.700
|
||||
94.500 230.400
|
||||
89.600 237.900
|
||||
84.200 245.200
|
||||
78.300 252.300
|
||||
71.900 259.200
|
||||
65.000 265.900
|
||||
57.500 272.300
|
||||
49.600 278.600
|
||||
41.100 284.700
|
||||
32.100 290.500
|
||||
22.700 296.100
|
||||
12.700 301.500
|
||||
12.700 304.000
|
||||
115.300 375.000
|
||||
115.300 415.500
|
||||
114.600 425.000
|
||||
112.600 433.500
|
||||
109.400 441.000
|
||||
105.100 447.500
|
||||
99.600 453.000
|
||||
93.000 457.300
|
||||
85.500 460.400
|
||||
77.100 462.300
|
||||
67.800 463.000
|
||||
60.500 462.700
|
||||
52.300 461.800
|
||||
43.400 460.400
|
||||
33.800 458.500
|
||||
23.400 456.000
|
||||
23.400 464.900
|
||||
31.100 471.200
|
||||
38.800 476.900
|
||||
46.700 481.900
|
||||
54.500 486.300
|
||||
62.500 490.000
|
||||
70.400 493.000
|
||||
78.300 495.400
|
||||
86.300 497.100
|
||||
94.100 498.100
|
||||
102.000 498.500
|
||||
111.800 498.000
|
||||
121.200 496.500
|
||||
130.100 494.000
|
||||
138.400 490.700
|
||||
146.100 486.400
|
||||
153.100 481.300
|
||||
159.400 475.300
|
||||
165.000 468.600
|
||||
169.800 461.100
|
||||
173.700 452.800
|
||||
176.700 443.800
|
||||
178.800 434.100
|
||||
179.900 423.700
|
||||
209.000 441.500
|
||||
209.000 498.500
|
||||
223.600 498.500
|
||||
223.600 452.200
|
||||
290.700 499.100
|
||||
299.600 493.000
|
||||
308.200 486.900
|
||||
316.400 480.900
|
||||
324.200 475.000
|
||||
331.700 469.100
|
||||
338.800 463.200
|
||||
345.600 457.400
|
||||
352.000 451.600
|
||||
358.000 445.700
|
||||
363.600 439.900
|
||||
368.800 434.100
|
||||
373.700 428.300
|
||||
378.100 422.500
|
||||
383.500 414.500
|
||||
387.900 406.500
|
||||
391.500 398.500
|
||||
394.300 390.400
|
||||
396.400 382.200
|
||||
398.000 373.900
|
||||
399.100 365.400
|
||||
399.700 356.700
|
||||
400.100 347.800
|
||||
400.300 338.700
|
||||
400.300 155.200
|
||||
307.800 77.900
|
||||
297.700 82.300
|
||||
288.100 86.400
|
||||
278.700 90.100
|
||||
269.800 93.500
|
||||
261.200 96.500
|
||||
253.000 99.100
|
||||
245.100 101.300
|
||||
237.600 103.000
|
||||
230.400 104.300
|
||||
223.600 105.100
|
||||
223.600 0.000
|
||||
215.600 0.300
|
||||
207.500 0.500
|
||||
199.300 0.800
|
||||
191.000 1.000
|
||||
165.300 1.300
|
||||
151.800 1.100
|
||||
143.900 0.900
|
||||
135.100 0.600
|
||||
125.600 0.300
|
||||
POLYGON
|
||||
115.300 359.100
|
||||
68.400 327.500
|
||||
115.300 288.800
|
||||
POLYGON
|
||||
209.000 17.700
|
||||
209.000 426.900
|
||||
182.400 409.200
|
||||
182.400 17.700
|
||||
POLYGON
|
||||
233.200 175.400
|
||||
242.600 173.400
|
||||
252.000 171.200
|
||||
261.200 169.000
|
||||
270.200 166.600
|
||||
279.200 164.000
|
||||
288.000 161.300
|
||||
296.600 158.500
|
||||
305.200 155.400
|
||||
313.600 152.200
|
||||
321.800 148.700
|
||||
330.000 145.000
|
||||
330.000 227.400
|
||||
323.100 232.900
|
||||
316.000 237.500
|
||||
308.700 241.200
|
||||
301.000 244.100
|
||||
293.000 246.100
|
||||
284.500 247.300
|
||||
275.500 247.600
|
||||
267.500 247.300
|
||||
259.700 246.400
|
||||
252.100 244.800
|
||||
244.700 242.600
|
||||
237.500 239.700
|
||||
230.400 236.100
|
||||
223.600 231.800
|
||||
223.600 177.300
|
||||
POLYGON
|
||||
328.700 352.700
|
||||
326.700 362.900
|
||||
324.000 372.700
|
||||
320.500 381.900
|
||||
316.300 390.500
|
||||
311.500 398.600
|
||||
306.000 406.000
|
||||
300.000 412.900
|
||||
293.400 419.000
|
||||
286.300 424.500
|
||||
278.600 429.300
|
||||
270.600 433.300
|
||||
262.100 436.600
|
||||
253.200 439.000
|
||||
243.900 440.700
|
||||
234.300 441.500
|
||||
223.600 435.800
|
||||
223.600 342.700
|
||||
228.600 337.500
|
||||
234.700 333.000
|
||||
241.900 329.100
|
||||
250.000 326.000
|
||||
258.800 323.700
|
||||
268.200 322.200
|
||||
278.000 321.800
|
||||
287.100 322.200
|
||||
295.900 323.600
|
||||
304.100 325.700
|
||||
311.800 328.700
|
||||
318.700 332.500
|
||||
324.800 336.900
|
||||
330.000 342.000
|
||||
POLYGON
|
||||
230.300 249.200
|
||||
237.400 252.700
|
||||
244.800 255.600
|
||||
252.500 257.900
|
||||
260.500 259.600
|
||||
268.800 260.600
|
||||
277.400 260.900
|
||||
284.300 260.600
|
||||
291.300 259.700
|
||||
298.600 258.100
|
||||
306.000 255.900
|
||||
313.700 253.000
|
||||
321.700 249.400
|
||||
330.000 245.100
|
||||
330.000 323.700
|
||||
323.300 319.600
|
||||
316.500 316.200
|
||||
309.300 313.400
|
||||
301.800 311.200
|
||||
294.000 309.700
|
||||
285.900 308.800
|
||||
277.400 308.400
|
||||
268.600 308.700
|
||||
260.300 309.600
|
||||
252.200 311.000
|
||||
244.600 313.000
|
||||
237.200 315.700
|
||||
230.300 319.000
|
||||
223.600 323.000
|
||||
223.600 245.100
|
||||
POLYGON
|
||||
259.300 501.200
|
||||
268.500 495.800
|
||||
277.700 490.800
|
||||
286.800 486.200
|
||||
295.900 481.900
|
||||
305.000 478.000
|
||||
314.000 474.500
|
||||
323.000 471.400
|
||||
332.000 468.600
|
||||
341.000 466.200
|
||||
350.000 464.200
|
||||
358.900 462.600
|
||||
367.900 461.300
|
||||
376.800 460.400
|
||||
385.700 459.800
|
||||
394.600 459.600
|
||||
401.200 459.700
|
||||
408.300 460.000
|
||||
415.800 460.400
|
||||
423.800 461.100
|
||||
432.400 462.100
|
||||
441.500 463.400
|
||||
443.800 459.600
|
||||
335.700 373.500
|
||||
346.800 370.300
|
||||
357.500 366.900
|
||||
367.700 363.200
|
||||
377.400 359.100
|
||||
386.600 354.700
|
||||
395.300 350.000
|
||||
403.500 345.000
|
||||
411.300 339.600
|
||||
418.500 334.000
|
||||
425.200 328.000
|
||||
431.400 321.700
|
||||
437.100 315.100
|
||||
442.300 308.200
|
||||
447.100 301.000
|
||||
451.300 293.400
|
||||
455.000 285.500
|
||||
458.300 277.300
|
||||
461.000 268.800
|
||||
463.200 260.000
|
||||
465.000 250.800
|
||||
466.200 241.400
|
||||
467.000 231.600
|
||||
467.200 221.500
|
||||
467.000 213.300
|
||||
466.300 205.100
|
||||
465.100 196.800
|
||||
463.400 188.500
|
||||
461.300 180.200
|
||||
458.800 171.800
|
||||
455.800 163.500
|
||||
452.400 155.200
|
||||
448.500 146.900
|
||||
444.200 138.700
|
||||
439.500 130.600
|
||||
434.300 122.500
|
||||
428.800 114.600
|
||||
422.800 106.800
|
||||
416.500 99.200
|
||||
409.700 91.700
|
||||
402.500 84.300
|
||||
395.000 77.200
|
||||
387.100 70.300
|
||||
380.100 64.700
|
||||
373.000 59.300
|
||||
365.500 54.100
|
||||
357.900 49.100
|
||||
350.100 44.300
|
||||
342.000 39.700
|
||||
333.800 35.400
|
||||
325.400 31.200
|
||||
316.800 27.400
|
||||
308.100 23.700
|
||||
299.200 20.300
|
||||
290.200 17.200
|
||||
281.100 14.300
|
||||
271.900 11.600
|
||||
262.600 9.200
|
||||
253.200 7.100
|
||||
243.700 5.200
|
||||
234.200 3.700
|
||||
224.600 2.400
|
||||
215.000 1.300
|
||||
205.300 0.600
|
||||
195.600 0.100
|
||||
186.000 0.000
|
||||
175.300 0.300
|
||||
164.800 1.000
|
||||
154.500 2.300
|
||||
144.500 4.100
|
||||
134.700 6.400
|
||||
125.100 9.100
|
||||
115.800 12.300
|
||||
106.800 15.900
|
||||
98.100 20.000
|
||||
89.700 24.500
|
||||
81.600 29.400
|
||||
73.800 34.800
|
||||
66.300 40.500
|
||||
59.200 46.600
|
||||
52.400 53.000
|
||||
46.000 59.800
|
||||
40.000 67.000
|
||||
34.300 74.500
|
||||
29.100 82.300
|
||||
24.200 90.400
|
||||
19.700 98.800
|
||||
15.700 107.500
|
||||
12.100 116.500
|
||||
9.000 125.700
|
||||
6.300 135.200
|
||||
4.000 144.900
|
||||
2.300 154.900
|
||||
1.000 165.000
|
||||
0.300 175.400
|
||||
0.000 186.000
|
||||
0.200 194.600
|
||||
0.700 203.300
|
||||
1.500 211.900
|
||||
2.700 220.500
|
||||
4.200 229.000
|
||||
6.100 237.500
|
||||
8.200 246.000
|
||||
10.700 254.400
|
||||
13.600 262.800
|
||||
16.700 271.100
|
||||
20.200 279.300
|
||||
24.000 287.500
|
||||
28.100 295.600
|
||||
32.500 303.700
|
||||
37.300 311.700
|
||||
42.400 319.600
|
||||
47.700 327.400
|
||||
53.400 335.100
|
||||
59.400 342.800
|
||||
65.700 350.300
|
||||
72.300 357.800
|
||||
79.300 365.100
|
||||
86.500 372.400
|
||||
94.000 379.500
|
||||
101.800 386.600
|
||||
109.900 393.500
|
||||
118.400 400.300
|
||||
127.100 407.000
|
||||
136.100 413.500
|
||||
POLYGON
|
||||
249.500 212.400
|
||||
258.200 207.900
|
||||
266.800 203.900
|
||||
275.300 200.400
|
||||
283.700 197.400
|
||||
292.000 194.900
|
||||
300.300 193.000
|
||||
308.500 191.600
|
||||
316.800 190.800
|
||||
325.100 190.500
|
||||
333.400 190.800
|
||||
341.700 191.700
|
||||
350.100 193.300
|
||||
358.500 195.500
|
||||
366.900 198.300
|
||||
375.400 201.800
|
||||
384.000 206.000
|
||||
392.700 210.800
|
||||
401.400 216.200
|
||||
399.600 225.500
|
||||
396.900 234.500
|
||||
393.400 242.900
|
||||
389.100 250.900
|
||||
384.100 258.400
|
||||
378.300 265.300
|
||||
371.800 271.600
|
||||
364.700 277.300
|
||||
357.000 282.300
|
||||
348.700 286.700
|
||||
339.900 290.400
|
||||
330.600 293.300
|
||||
320.900 295.400
|
||||
310.700 296.700
|
||||
300.100 297.100
|
||||
292.400 296.800
|
||||
284.500 296.100
|
||||
276.200 294.700
|
||||
267.600 292.800
|
||||
258.700 290.400
|
||||
249.500 287.300
|
||||
POLYGON
|
||||
259.000 36.500
|
||||
268.300 37.300
|
||||
277.500 38.500
|
||||
286.500 40.200
|
||||
295.300 42.300
|
||||
303.900 45.000
|
||||
312.200 48.100
|
||||
320.400 51.600
|
||||
328.400 55.700
|
||||
336.100 60.100
|
||||
343.600 65.100
|
||||
350.800 70.400
|
||||
357.800 76.300
|
||||
364.500 82.500
|
||||
371.000 89.200
|
||||
377.100 96.400
|
||||
383.000 103.900
|
||||
388.600 111.900
|
||||
380.900 115.900
|
||||
373.100 119.400
|
||||
365.300 122.400
|
||||
357.300 124.800
|
||||
349.200 126.800
|
||||
341.100 128.200
|
||||
332.800 129.000
|
||||
324.300 129.300
|
||||
316.900 129.100
|
||||
309.300 128.400
|
||||
301.600 127.300
|
||||
293.500 125.800
|
||||
285.300 123.900
|
||||
276.800 121.700
|
||||
268.000 119.000
|
||||
258.900 116.000
|
||||
249.500 112.600
|
||||
249.500 36.300
|
||||
POLYGON
|
||||
231.300 279.000
|
||||
223.100 276.400
|
||||
215.200 273.200
|
||||
207.400 269.300
|
||||
199.600 264.600
|
||||
199.600 206.400
|
||||
199.400 196.400
|
||||
198.700 187.300
|
||||
197.000 179.000
|
||||
193.900 171.500
|
||||
189.000 164.800
|
||||
185.900 161.600
|
||||
181.900 157.700
|
||||
177.200 153.300
|
||||
171.600 148.200
|
||||
165.200 142.500
|
||||
158.000 136.200
|
||||
141.100 121.600
|
||||
131.400 113.300
|
||||
121.000 104.300
|
||||
128.300 96.000
|
||||
135.700 88.200
|
||||
143.200 81.000
|
||||
150.800 74.300
|
||||
158.500 68.100
|
||||
166.300 62.500
|
||||
174.200 57.400
|
||||
182.100 52.800
|
||||
190.100 48.800
|
||||
198.200 45.400
|
||||
206.400 42.500
|
||||
214.600 40.100
|
||||
222.900 38.300
|
||||
231.300 37.000
|
||||
POLYGON
|
||||
116.600 363.400
|
||||
111.100 357.500
|
||||
106.100 351.100
|
||||
101.400 344.300
|
||||
97.100 337.000
|
||||
93.200 329.300
|
||||
89.700 321.200
|
||||
86.600 312.700
|
||||
83.900 303.800
|
||||
81.600 294.500
|
||||
79.700 284.800
|
||||
78.200 274.600
|
||||
77.200 264.100
|
||||
76.600 253.200
|
||||
76.400 241.900
|
||||
76.500 231.200
|
||||
77.100 220.800
|
||||
78.000 210.600
|
||||
79.300 200.800
|
||||
80.900 191.300
|
||||
82.900 182.100
|
||||
85.200 173.200
|
||||
87.900 164.700
|
||||
90.900 156.500
|
||||
94.300 148.600
|
||||
98.000 141.200
|
||||
102.100 134.000
|
||||
106.400 127.300
|
||||
111.100 121.000
|
||||
115.600 124.500
|
||||
118.800 129.200
|
||||
120.800 135.200
|
||||
121.900 142.700
|
||||
122.400 151.700
|
||||
122.500 162.500
|
||||
122.500 368.900
|
||||
POLYGON
|
||||
249.500 130.000
|
||||
258.200 133.100
|
||||
266.800 135.900
|
||||
275.300 138.300
|
||||
283.600 140.400
|
||||
291.900 142.100
|
||||
300.000 143.400
|
||||
308.200 144.400
|
||||
316.300 145.000
|
||||
324.300 145.200
|
||||
333.800 144.900
|
||||
343.100 144.100
|
||||
352.000 142.800
|
||||
360.800 141.000
|
||||
369.300 138.600
|
||||
377.700 135.600
|
||||
385.900 132.000
|
||||
393.900 127.800
|
||||
397.200 135.000
|
||||
399.900 142.400
|
||||
402.100 150.000
|
||||
403.800 157.900
|
||||
405.000 166.000
|
||||
405.700 174.300
|
||||
406.000 182.900
|
||||
405.900 188.200
|
||||
405.700 193.500
|
||||
405.200 198.800
|
||||
395.200 194.000
|
||||
385.500 189.800
|
||||
376.000 186.000
|
||||
366.800 182.800
|
||||
357.900 180.200
|
||||
349.200 178.100
|
||||
340.900 176.600
|
||||
332.800 175.700
|
||||
325.100 175.400
|
||||
317.200 175.600
|
||||
309.200 176.300
|
||||
301.100 177.400
|
||||
292.900 179.000
|
||||
284.500 181.000
|
||||
276.000 183.500
|
||||
267.300 186.400
|
||||
258.500 189.700
|
||||
249.500 193.500
|
||||
POLYGON
|
||||
320.500 386.300
|
||||
199.600 434.700
|
||||
199.600 288.800
|
||||
POLYGON
|
||||
260.600 37.500
|
||||
182.500 37.500
|
||||
182.500 82.500
|
||||
176.600 73.700
|
||||
170.100 65.800
|
||||
163.000 58.600
|
||||
155.500 52.200
|
||||
147.500 46.700
|
||||
139.200 41.900
|
||||
130.600 38.000
|
||||
121.800 34.800
|
||||
112.900 32.400
|
||||
103.800 30.800
|
||||
94.800 30.000
|
||||
85.800 30.000
|
||||
76.900 30.800
|
||||
68.100 32.300
|
||||
59.600 34.600
|
||||
51.500 37.700
|
||||
43.600 41.600
|
||||
36.300 46.200
|
||||
29.400 51.600
|
||||
23.100 57.800
|
||||
17.400 64.700
|
||||
12.500 72.400
|
||||
8.300 80.900
|
||||
4.900 90.100
|
||||
2.400 100.100
|
||||
0.900 110.800
|
||||
0.400 122.300
|
||||
0.400 328.700
|
||||
78.500 328.700
|
||||
78.500 160.200
|
||||
77.900 145.600
|
||||
78.800 132.700
|
||||
81.000 121.400
|
||||
84.400 111.700
|
||||
88.800 103.600
|
||||
94.100 97.000
|
||||
100.100 91.800
|
||||
106.700 88.000
|
||||
113.800 85.700
|
||||
121.300 84.600
|
||||
128.800 84.900
|
||||
136.400 86.300
|
||||
143.900 89.000
|
||||
151.200 92.900
|
||||
158.000 97.800
|
||||
164.300 103.900
|
||||
169.900 110.900
|
||||
174.600 119.000
|
||||
178.400 128.000
|
||||
181.100 137.900
|
||||
182.500 148.600
|
||||
182.500 328.700
|
||||
260.600 328.700
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,350 @@
|
|||
POLYGON
|
||||
259.300 501.200
|
||||
268.500 495.800
|
||||
277.700 490.800
|
||||
286.800 486.200
|
||||
295.900 481.900
|
||||
305.000 478.000
|
||||
314.000 474.500
|
||||
323.000 471.400
|
||||
332.000 468.600
|
||||
341.000 466.200
|
||||
350.000 464.200
|
||||
358.900 462.600
|
||||
367.900 461.300
|
||||
376.800 460.400
|
||||
385.700 459.800
|
||||
394.600 459.600
|
||||
401.200 459.700
|
||||
408.300 460.000
|
||||
415.800 460.400
|
||||
423.800 461.100
|
||||
432.400 462.100
|
||||
441.500 463.400
|
||||
443.800 459.600
|
||||
335.700 373.500
|
||||
346.800 370.300
|
||||
357.500 366.900
|
||||
367.700 363.200
|
||||
377.400 359.100
|
||||
386.600 354.700
|
||||
395.300 350.000
|
||||
403.500 345.000
|
||||
411.300 339.600
|
||||
418.500 334.000
|
||||
425.200 328.000
|
||||
431.400 321.700
|
||||
437.100 315.100
|
||||
442.300 308.200
|
||||
447.100 301.000
|
||||
451.300 293.400
|
||||
455.000 285.500
|
||||
458.300 277.300
|
||||
461.000 268.800
|
||||
463.200 260.000
|
||||
465.000 250.800
|
||||
466.200 241.400
|
||||
467.000 231.600
|
||||
467.200 221.500
|
||||
467.000 213.300
|
||||
466.300 205.100
|
||||
465.100 196.800
|
||||
463.400 188.500
|
||||
461.300 180.200
|
||||
458.800 171.800
|
||||
455.800 163.500
|
||||
452.400 155.200
|
||||
448.500 146.900
|
||||
444.200 138.700
|
||||
439.500 130.600
|
||||
434.300 122.500
|
||||
428.800 114.600
|
||||
422.800 106.800
|
||||
416.500 99.200
|
||||
409.700 91.700
|
||||
402.500 84.300
|
||||
395.000 77.200
|
||||
387.100 70.300
|
||||
380.100 64.700
|
||||
373.000 59.300
|
||||
365.500 54.100
|
||||
357.900 49.100
|
||||
350.100 44.300
|
||||
342.000 39.700
|
||||
333.800 35.400
|
||||
325.400 31.200
|
||||
316.800 27.400
|
||||
308.100 23.700
|
||||
299.200 20.300
|
||||
290.200 17.200
|
||||
281.100 14.300
|
||||
271.900 11.600
|
||||
262.600 9.200
|
||||
253.200 7.100
|
||||
243.700 5.200
|
||||
234.200 3.700
|
||||
224.600 2.400
|
||||
215.000 1.300
|
||||
205.300 0.600
|
||||
195.600 0.100
|
||||
186.000 0.000
|
||||
175.300 0.300
|
||||
164.800 1.000
|
||||
154.500 2.300
|
||||
144.500 4.100
|
||||
134.700 6.400
|
||||
125.100 9.100
|
||||
115.800 12.300
|
||||
106.800 15.900
|
||||
98.100 20.000
|
||||
89.700 24.500
|
||||
81.600 29.400
|
||||
73.800 34.800
|
||||
66.300 40.500
|
||||
59.200 46.600
|
||||
52.400 53.000
|
||||
46.000 59.800
|
||||
40.000 67.000
|
||||
34.300 74.500
|
||||
29.100 82.300
|
||||
24.200 90.400
|
||||
19.700 98.800
|
||||
15.700 107.500
|
||||
12.100 116.500
|
||||
9.000 125.700
|
||||
6.300 135.200
|
||||
4.000 144.900
|
||||
2.300 154.900
|
||||
1.000 165.000
|
||||
0.300 175.400
|
||||
0.000 186.000
|
||||
0.200 194.600
|
||||
0.700 203.300
|
||||
1.500 211.900
|
||||
2.700 220.500
|
||||
4.200 229.000
|
||||
6.100 237.500
|
||||
8.200 246.000
|
||||
10.700 254.400
|
||||
13.600 262.800
|
||||
16.700 271.100
|
||||
20.200 279.300
|
||||
24.000 287.500
|
||||
28.100 295.600
|
||||
32.500 303.700
|
||||
37.300 311.700
|
||||
42.400 319.600
|
||||
47.700 327.400
|
||||
53.400 335.100
|
||||
59.400 342.800
|
||||
65.700 350.300
|
||||
72.300 357.800
|
||||
79.300 365.100
|
||||
86.500 372.400
|
||||
94.000 379.500
|
||||
101.800 386.600
|
||||
109.900 393.500
|
||||
118.400 400.300
|
||||
127.100 407.000
|
||||
136.100 413.500
|
||||
POLYGON
|
||||
249.500 212.400
|
||||
258.200 207.900
|
||||
266.800 203.900
|
||||
275.300 200.400
|
||||
283.700 197.400
|
||||
292.000 194.900
|
||||
300.300 193.000
|
||||
308.500 191.600
|
||||
316.800 190.800
|
||||
325.100 190.500
|
||||
333.400 190.800
|
||||
341.700 191.700
|
||||
350.100 193.300
|
||||
358.500 195.500
|
||||
366.900 198.300
|
||||
375.400 201.800
|
||||
384.000 206.000
|
||||
392.700 210.800
|
||||
401.400 216.200
|
||||
399.600 225.500
|
||||
396.900 234.500
|
||||
393.400 242.900
|
||||
389.100 250.900
|
||||
384.100 258.400
|
||||
378.300 265.300
|
||||
371.800 271.600
|
||||
364.700 277.300
|
||||
357.000 282.300
|
||||
348.700 286.700
|
||||
339.900 290.400
|
||||
330.600 293.300
|
||||
320.900 295.400
|
||||
310.700 296.700
|
||||
300.100 297.100
|
||||
292.400 296.800
|
||||
284.500 296.100
|
||||
276.200 294.700
|
||||
267.600 292.800
|
||||
258.700 290.400
|
||||
249.500 287.300
|
||||
POLYGON
|
||||
259.000 36.500
|
||||
268.300 37.300
|
||||
277.500 38.500
|
||||
286.500 40.200
|
||||
295.300 42.300
|
||||
303.900 45.000
|
||||
312.200 48.100
|
||||
320.400 51.600
|
||||
328.400 55.700
|
||||
336.100 60.100
|
||||
343.600 65.100
|
||||
350.800 70.400
|
||||
357.800 76.300
|
||||
364.500 82.500
|
||||
371.000 89.200
|
||||
377.100 96.400
|
||||
383.000 103.900
|
||||
388.600 111.900
|
||||
380.900 115.900
|
||||
373.100 119.400
|
||||
365.300 122.400
|
||||
357.300 124.800
|
||||
349.200 126.800
|
||||
341.100 128.200
|
||||
332.800 129.000
|
||||
324.300 129.300
|
||||
316.900 129.100
|
||||
309.300 128.400
|
||||
301.600 127.300
|
||||
293.500 125.800
|
||||
285.300 123.900
|
||||
276.800 121.700
|
||||
268.000 119.000
|
||||
258.900 116.000
|
||||
249.500 112.600
|
||||
249.500 36.300
|
||||
POLYGON
|
||||
231.300 279.000
|
||||
223.100 276.400
|
||||
215.200 273.200
|
||||
207.400 269.300
|
||||
199.600 264.600
|
||||
199.600 206.400
|
||||
199.400 196.400
|
||||
198.700 187.300
|
||||
197.000 179.000
|
||||
193.900 171.500
|
||||
189.000 164.800
|
||||
185.900 161.600
|
||||
181.900 157.700
|
||||
177.200 153.300
|
||||
171.600 148.200
|
||||
165.200 142.500
|
||||
158.000 136.200
|
||||
141.100 121.600
|
||||
131.400 113.300
|
||||
121.000 104.300
|
||||
128.300 96.000
|
||||
135.700 88.200
|
||||
143.200 81.000
|
||||
150.800 74.300
|
||||
158.500 68.100
|
||||
166.300 62.500
|
||||
174.200 57.400
|
||||
182.100 52.800
|
||||
190.100 48.800
|
||||
198.200 45.400
|
||||
206.400 42.500
|
||||
214.600 40.100
|
||||
222.900 38.300
|
||||
231.300 37.000
|
||||
POLYGON
|
||||
116.600 363.400
|
||||
111.100 357.500
|
||||
106.100 351.100
|
||||
101.400 344.300
|
||||
97.100 337.000
|
||||
93.200 329.300
|
||||
89.700 321.200
|
||||
86.600 312.700
|
||||
83.900 303.800
|
||||
81.600 294.500
|
||||
79.700 284.800
|
||||
78.200 274.600
|
||||
77.200 264.100
|
||||
76.600 253.200
|
||||
76.400 241.900
|
||||
76.500 231.200
|
||||
77.100 220.800
|
||||
78.000 210.600
|
||||
79.300 200.800
|
||||
80.900 191.300
|
||||
82.900 182.100
|
||||
85.200 173.200
|
||||
87.900 164.700
|
||||
90.900 156.500
|
||||
94.300 148.600
|
||||
98.000 141.200
|
||||
102.100 134.000
|
||||
106.400 127.300
|
||||
111.100 121.000
|
||||
115.600 124.500
|
||||
118.800 129.200
|
||||
120.800 135.200
|
||||
121.900 142.700
|
||||
122.400 151.700
|
||||
122.500 162.500
|
||||
122.500 368.900
|
||||
POLYGON
|
||||
249.500 130.000
|
||||
258.200 133.100
|
||||
266.800 135.900
|
||||
275.300 138.300
|
||||
283.600 140.400
|
||||
291.900 142.100
|
||||
300.000 143.400
|
||||
308.200 144.400
|
||||
316.300 145.000
|
||||
324.300 145.200
|
||||
333.800 144.900
|
||||
343.100 144.100
|
||||
352.000 142.800
|
||||
360.800 141.000
|
||||
369.300 138.600
|
||||
377.700 135.600
|
||||
385.900 132.000
|
||||
393.900 127.800
|
||||
397.200 135.000
|
||||
399.900 142.400
|
||||
402.100 150.000
|
||||
403.800 157.900
|
||||
405.000 166.000
|
||||
405.700 174.300
|
||||
406.000 182.900
|
||||
405.900 188.200
|
||||
405.700 193.500
|
||||
405.200 198.800
|
||||
395.200 194.000
|
||||
385.500 189.800
|
||||
376.000 186.000
|
||||
366.800 182.800
|
||||
357.900 180.200
|
||||
349.200 178.100
|
||||
340.900 176.600
|
||||
332.800 175.700
|
||||
325.100 175.400
|
||||
317.200 175.600
|
||||
309.200 176.300
|
||||
301.100 177.400
|
||||
292.900 179.000
|
||||
284.500 181.000
|
||||
276.000 183.500
|
||||
267.300 186.400
|
||||
258.500 189.700
|
||||
249.500 193.500
|
||||
POLYGON
|
||||
320.500 386.300
|
||||
199.600 434.700
|
||||
199.600 288.800
|
||||
|
|
@ -0,0 +1,243 @@
|
|||
POLYGON
|
||||
115.300 0.000
|
||||
115.300 112.700
|
||||
107.000 112.700
|
||||
99.500 112.600
|
||||
91.800 112.000
|
||||
84.000 111.100
|
||||
75.900 109.800
|
||||
67.700 108.200
|
||||
59.300 106.200
|
||||
50.700 103.800
|
||||
41.900 101.100
|
||||
32.800 98.000
|
||||
23.600 94.600
|
||||
14.100 90.900
|
||||
4.400 86.800
|
||||
0.000 94.400
|
||||
4.600 101.300
|
||||
9.700 108.100
|
||||
15.200 114.500
|
||||
21.100 120.700
|
||||
27.400 126.700
|
||||
34.200 132.400
|
||||
41.400 137.800
|
||||
49.000 143.000
|
||||
57.000 148.000
|
||||
65.400 152.600
|
||||
74.300 157.100
|
||||
83.600 161.300
|
||||
93.300 165.200
|
||||
103.400 168.900
|
||||
114.000 172.300
|
||||
112.800 181.200
|
||||
111.100 189.800
|
||||
108.800 198.300
|
||||
106.000 206.600
|
||||
102.700 214.800
|
||||
98.900 222.700
|
||||
94.500 230.400
|
||||
89.600 237.900
|
||||
84.200 245.200
|
||||
78.300 252.300
|
||||
71.900 259.200
|
||||
65.000 265.900
|
||||
57.500 272.300
|
||||
49.600 278.600
|
||||
41.100 284.700
|
||||
32.100 290.500
|
||||
22.700 296.100
|
||||
12.700 301.500
|
||||
12.700 304.000
|
||||
115.300 375.000
|
||||
115.300 415.500
|
||||
114.600 425.000
|
||||
112.600 433.500
|
||||
109.400 441.000
|
||||
105.100 447.500
|
||||
99.600 453.000
|
||||
93.000 457.300
|
||||
85.500 460.400
|
||||
77.100 462.300
|
||||
67.800 463.000
|
||||
60.500 462.700
|
||||
52.300 461.800
|
||||
43.400 460.400
|
||||
33.800 458.500
|
||||
23.400 456.000
|
||||
23.400 464.900
|
||||
31.100 471.200
|
||||
38.800 476.900
|
||||
46.700 481.900
|
||||
54.500 486.300
|
||||
62.500 490.000
|
||||
70.400 493.000
|
||||
78.300 495.400
|
||||
86.300 497.100
|
||||
94.100 498.100
|
||||
102.000 498.500
|
||||
111.800 498.000
|
||||
121.200 496.500
|
||||
130.100 494.000
|
||||
138.400 490.700
|
||||
146.100 486.400
|
||||
153.100 481.300
|
||||
159.400 475.300
|
||||
165.000 468.600
|
||||
169.800 461.100
|
||||
173.700 452.800
|
||||
176.700 443.800
|
||||
178.800 434.100
|
||||
179.900 423.700
|
||||
209.000 441.500
|
||||
209.000 498.500
|
||||
223.600 498.500
|
||||
223.600 452.200
|
||||
290.700 499.100
|
||||
299.600 493.000
|
||||
308.200 486.900
|
||||
316.400 480.900
|
||||
324.200 475.000
|
||||
331.700 469.100
|
||||
338.800 463.200
|
||||
345.600 457.400
|
||||
352.000 451.600
|
||||
358.000 445.700
|
||||
363.600 439.900
|
||||
368.800 434.100
|
||||
373.700 428.300
|
||||
378.100 422.500
|
||||
383.500 414.500
|
||||
387.900 406.500
|
||||
391.500 398.500
|
||||
394.300 390.400
|
||||
396.400 382.200
|
||||
398.000 373.900
|
||||
399.100 365.400
|
||||
399.700 356.700
|
||||
400.100 347.800
|
||||
400.300 338.700
|
||||
400.300 155.200
|
||||
307.800 77.900
|
||||
297.700 82.300
|
||||
288.100 86.400
|
||||
278.700 90.100
|
||||
269.800 93.500
|
||||
261.200 96.500
|
||||
253.000 99.100
|
||||
245.100 101.300
|
||||
237.600 103.000
|
||||
230.400 104.300
|
||||
223.600 105.100
|
||||
223.600 0.000
|
||||
215.600 0.300
|
||||
207.500 0.500
|
||||
199.300 0.800
|
||||
191.000 1.000
|
||||
165.300 1.300
|
||||
151.800 1.100
|
||||
143.900 0.900
|
||||
135.100 0.600
|
||||
125.600 0.300
|
||||
POLYGON
|
||||
115.300 359.100
|
||||
68.400 327.500
|
||||
115.300 288.800
|
||||
POLYGON
|
||||
209.000 17.700
|
||||
209.000 426.900
|
||||
182.400 409.200
|
||||
182.400 17.700
|
||||
POLYGON
|
||||
233.200 175.400
|
||||
242.600 173.400
|
||||
252.000 171.200
|
||||
261.200 169.000
|
||||
270.200 166.600
|
||||
279.200 164.000
|
||||
288.000 161.300
|
||||
296.600 158.500
|
||||
305.200 155.400
|
||||
313.600 152.200
|
||||
321.800 148.700
|
||||
330.000 145.000
|
||||
330.000 227.400
|
||||
323.100 232.900
|
||||
316.000 237.500
|
||||
308.700 241.200
|
||||
301.000 244.100
|
||||
293.000 246.100
|
||||
284.500 247.300
|
||||
275.500 247.600
|
||||
267.500 247.300
|
||||
259.700 246.400
|
||||
252.100 244.800
|
||||
244.700 242.600
|
||||
237.500 239.700
|
||||
230.400 236.100
|
||||
223.600 231.800
|
||||
223.600 177.300
|
||||
POLYGON
|
||||
328.700 352.700
|
||||
326.700 362.900
|
||||
324.000 372.700
|
||||
320.500 381.900
|
||||
316.300 390.500
|
||||
311.500 398.600
|
||||
306.000 406.000
|
||||
300.000 412.900
|
||||
293.400 419.000
|
||||
286.300 424.500
|
||||
278.600 429.300
|
||||
270.600 433.300
|
||||
262.100 436.600
|
||||
253.200 439.000
|
||||
243.900 440.700
|
||||
234.300 441.500
|
||||
223.600 435.800
|
||||
223.600 342.700
|
||||
228.600 337.500
|
||||
234.700 333.000
|
||||
241.900 329.100
|
||||
250.000 326.000
|
||||
258.800 323.700
|
||||
268.200 322.200
|
||||
278.000 321.800
|
||||
287.100 322.200
|
||||
295.900 323.600
|
||||
304.100 325.700
|
||||
311.800 328.700
|
||||
318.700 332.500
|
||||
324.800 336.900
|
||||
330.000 342.000
|
||||
POLYGON
|
||||
230.300 249.200
|
||||
237.400 252.700
|
||||
244.800 255.600
|
||||
252.500 257.900
|
||||
260.500 259.600
|
||||
268.800 260.600
|
||||
277.400 260.900
|
||||
284.300 260.600
|
||||
291.300 259.700
|
||||
298.600 258.100
|
||||
306.000 255.900
|
||||
313.700 253.000
|
||||
321.700 249.400
|
||||
330.000 245.100
|
||||
330.000 323.700
|
||||
323.300 319.600
|
||||
316.500 316.200
|
||||
309.300 313.400
|
||||
301.800 311.200
|
||||
294.000 309.700
|
||||
285.900 308.800
|
||||
277.400 308.400
|
||||
268.600 308.700
|
||||
260.300 309.600
|
||||
252.200 311.000
|
||||
244.600 313.000
|
||||
237.200 315.700
|
||||
230.300 319.000
|
||||
223.600 323.000
|
||||
223.600 245.100
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
POLYGON
|
||||
10175.200 1178.600
|
||||
10255.100 1458.500
|
||||
10238.900 1458.500
|
||||
10230.900 1458.400
|
||||
10223.400 1458.100
|
||||
10216.300 1457.600
|
||||
10209.600 1457.000
|
||||
10203.400 1456.100
|
||||
10197.600 1455.000
|
||||
10192.300 1453.700
|
||||
10187.400 1452.300
|
||||
10182.900 1450.600
|
||||
10178.900 1448.700
|
||||
10174.700 1446.300
|
||||
10170.600 1443.400
|
||||
10166.600 1440.000
|
||||
10162.700 1436.100
|
||||
10158.800 1431.700
|
||||
10155.000 1426.800
|
||||
10151.300 1421.500
|
||||
10147.700 1415.600
|
||||
10144.100 1409.300
|
||||
10136.700 1395.200
|
||||
10126.100 1397.500
|
||||
10136.000 1439.200
|
||||
10146.100 1481.100
|
||||
10421.900 1481.100
|
||||
10409.800 1438.700
|
||||
10398.000 1396.200
|
||||
10386.100 1397.700
|
||||
10386.900 1400.700
|
||||
10387.200 1409.000
|
||||
10387.000 1416.600
|
||||
10386.400 1423.500
|
||||
10385.200 1429.600
|
||||
10383.600 1435.000
|
||||
10381.500 1439.700
|
||||
10378.900 1443.700
|
||||
10375.900 1447.000
|
||||
10372.900 1449.200
|
||||
10369.400 1451.100
|
||||
10365.300 1452.900
|
||||
10360.600 1454.400
|
||||
10355.400 1455.600
|
||||
10349.500 1456.700
|
||||
10343.100 1457.500
|
||||
10336.100 1458.100
|
||||
10328.500 1458.400
|
||||
10320.300 1458.500
|
||||
10306.200 1458.500
|
||||
10231.700 1197.400
|
||||
10229.300 1188.600
|
||||
10227.600 1180.700
|
||||
10226.600 1173.800
|
||||
10226.200 1167.800
|
||||
10226.500 1162.900
|
||||
10227.500 1159.000
|
||||
10230.500 1154.300
|
||||
10235.300 1150.600
|
||||
10242.200 1147.800
|
||||
10250.900 1145.900
|
||||
10271.400 1144.200
|
||||
10268.000 1131.300
|
||||
10117.300 1131.300
|
||||
10120.700 1144.200
|
||||
10133.300 1145.700
|
||||
10140.300 1146.700
|
||||
10146.700 1148.200
|
||||
10152.300 1150.100
|
||||
10157.200 1152.400
|
||||
10161.400 1155.200
|
||||
10165.800 1159.400
|
||||
10169.500 1164.700
|
||||
10172.700 1171.100
|
||||
|
|
@ -0,0 +1,158 @@
|
|||
POLYGON
|
||||
355.500 113.000
|
||||
347.000 104.800
|
||||
338.100 97.200
|
||||
328.800 90.300
|
||||
319.100 84.000
|
||||
309.100 78.300
|
||||
298.900 73.300
|
||||
288.400 68.900
|
||||
277.800 65.100
|
||||
267.000 62.000
|
||||
256.200 59.400
|
||||
245.300 57.500
|
||||
234.400 56.200
|
||||
223.600 55.400
|
||||
212.700 55.300
|
||||
202.000 55.700
|
||||
191.500 56.600
|
||||
181.000 58.100
|
||||
170.800 60.200
|
||||
160.800 62.700
|
||||
151.000 65.800
|
||||
141.600 69.400
|
||||
132.400 73.400
|
||||
123.500 77.900
|
||||
115.000 82.900
|
||||
106.800 88.200
|
||||
99.000 94.000
|
||||
91.600 100.200
|
||||
84.700 106.700
|
||||
78.100 113.500
|
||||
72.100 120.700
|
||||
66.400 128.200
|
||||
61.300 135.900
|
||||
56.600 143.900
|
||||
52.400 152.200
|
||||
48.700 160.600
|
||||
45.500 169.200
|
||||
42.800 177.900
|
||||
40.600 186.700
|
||||
38.900 195.600
|
||||
37.700 204.600
|
||||
37.000 213.600
|
||||
36.800 222.600
|
||||
37.200 231.500
|
||||
38.000 240.400
|
||||
39.300 249.100
|
||||
41.100 257.700
|
||||
43.300 266.100
|
||||
46.000 274.300
|
||||
49.200 282.200
|
||||
52.800 289.800
|
||||
56.800 297.100
|
||||
61.200 304.000
|
||||
66.000 310.500
|
||||
71.900 319.100
|
||||
78.300 327.300
|
||||
85.000 335.000
|
||||
92.100 342.300
|
||||
99.600 349.000
|
||||
107.300 355.300
|
||||
115.400 361.100
|
||||
123.700 366.400
|
||||
132.300 371.100
|
||||
141.100 375.400
|
||||
150.000 379.100
|
||||
159.200 382.300
|
||||
168.400 384.900
|
||||
177.800 387.100
|
||||
187.300 388.700
|
||||
196.800 389.800
|
||||
206.400 390.400
|
||||
216.000 390.500
|
||||
225.600 390.200
|
||||
235.100 389.300
|
||||
244.600 388.000
|
||||
253.900 386.200
|
||||
263.200 383.900
|
||||
272.300 381.300
|
||||
281.300 378.200
|
||||
290.100 374.800
|
||||
298.600 371.000
|
||||
306.900 366.900
|
||||
315.000 362.400
|
||||
322.800 357.700
|
||||
330.200 352.700
|
||||
337.400 347.500
|
||||
344.100 342.100
|
||||
350.500 336.500
|
||||
342.700 331.600
|
||||
335.100 326.500
|
||||
327.500 321.300
|
||||
320.000 316.000
|
||||
312.600 310.600
|
||||
305.300 305.000
|
||||
298.100 299.300
|
||||
291.000 293.500
|
||||
286.600 303.100
|
||||
281.400 312.000
|
||||
275.400 320.000
|
||||
268.900 327.200
|
||||
261.800 333.500
|
||||
254.300 338.900
|
||||
246.500 343.400
|
||||
238.400 346.900
|
||||
230.100 349.600
|
||||
221.800 351.200
|
||||
213.400 352.000
|
||||
205.100 351.700
|
||||
197.000 350.600
|
||||
189.000 348.500
|
||||
181.400 345.600
|
||||
174.000 341.700
|
||||
167.000 337.000
|
||||
160.400 331.500
|
||||
154.300 325.300
|
||||
148.800 318.200
|
||||
143.800 310.500
|
||||
139.400 302.200
|
||||
135.600 293.300
|
||||
132.400 283.900
|
||||
130.000 274.000
|
||||
128.200 263.700
|
||||
127.200 253.200
|
||||
127.000 242.400
|
||||
127.400 231.400
|
||||
128.700 220.400
|
||||
130.700 209.500
|
||||
133.400 198.700
|
||||
136.900 188.100
|
||||
141.200 177.900
|
||||
146.200 168.200
|
||||
152.000 159.000
|
||||
159.400 149.600
|
||||
167.100 141.100
|
||||
175.000 133.600
|
||||
183.200 126.900
|
||||
191.600 121.100
|
||||
200.100 116.200
|
||||
208.800 112.200
|
||||
217.600 109.100
|
||||
226.500 106.700
|
||||
235.300 105.200
|
||||
244.200 104.600
|
||||
253.000 104.700
|
||||
261.700 105.700
|
||||
270.300 107.400
|
||||
278.800 110.000
|
||||
287.100 113.300
|
||||
295.100 117.300
|
||||
303.000 122.200
|
||||
310.500 127.700
|
||||
317.700 134.000
|
||||
324.500 141.000
|
||||
330.200 134.900
|
||||
336.200 129.100
|
||||
342.400 123.500
|
||||
348.900 118.100
|
||||
|
|
@ -0,0 +1,174 @@
|
|||
POLYGON
|
||||
197.100 305.000
|
||||
197.100 67.900
|
||||
197.300 54.000
|
||||
197.500 48.800
|
||||
197.700 44.600
|
||||
198.100 41.500
|
||||
198.500 39.400
|
||||
200.000 35.000
|
||||
202.200 31.400
|
||||
205.100 28.700
|
||||
208.100 27.100
|
||||
211.900 25.800
|
||||
216.700 24.800
|
||||
222.400 24.200
|
||||
222.400 17.000
|
||||
135.700 0.000
|
||||
135.700 32.600
|
||||
131.900 28.100
|
||||
128.200 23.900
|
||||
124.500 20.100
|
||||
121.000 16.700
|
||||
117.600 13.700
|
||||
114.300 11.000
|
||||
111.100 8.700
|
||||
108.000 6.800
|
||||
103.900 4.700
|
||||
99.500 3.000
|
||||
95.000 1.700
|
||||
90.400 0.800
|
||||
85.500 0.200
|
||||
80.500 0.000
|
||||
75.000 0.200
|
||||
69.600 0.700
|
||||
64.400 1.600
|
||||
59.400 2.900
|
||||
54.500 4.500
|
||||
49.900 6.500
|
||||
45.300 8.800
|
||||
41.000 11.500
|
||||
36.800 14.600
|
||||
32.800 18.000
|
||||
29.000 21.800
|
||||
25.300 25.900
|
||||
21.800 30.400
|
||||
18.400 35.300
|
||||
15.900 39.400
|
||||
13.500 43.700
|
||||
11.400 48.100
|
||||
9.400 52.700
|
||||
7.600 57.400
|
||||
6.000 62.200
|
||||
4.600 67.200
|
||||
3.400 72.300
|
||||
2.300 77.500
|
||||
1.500 82.800
|
||||
0.800 88.300
|
||||
0.400 93.900
|
||||
0.100 99.700
|
||||
0.000 105.600
|
||||
0.100 111.100
|
||||
0.300 116.500
|
||||
0.700 121.800
|
||||
1.300 127.000
|
||||
2.000 132.100
|
||||
2.900 137.100
|
||||
3.900 142.000
|
||||
5.100 146.900
|
||||
6.400 151.600
|
||||
7.900 156.200
|
||||
9.600 160.700
|
||||
11.400 165.200
|
||||
13.800 170.300
|
||||
16.300 175.200
|
||||
19.000 179.800
|
||||
21.900 184.200
|
||||
24.900 188.300
|
||||
28.100 192.100
|
||||
31.500 195.700
|
||||
35.100 199.100
|
||||
38.800 202.100
|
||||
42.700 205.000
|
||||
47.100 207.800
|
||||
51.600 210.300
|
||||
56.200 212.400
|
||||
60.900 214.300
|
||||
65.600 215.700
|
||||
70.400 216.900
|
||||
75.300 217.700
|
||||
80.300 218.200
|
||||
85.300 218.400
|
||||
91.100 218.200
|
||||
96.500 217.500
|
||||
101.800 216.300
|
||||
106.700 214.700
|
||||
111.400 212.700
|
||||
115.200 210.500
|
||||
119.200 207.900
|
||||
123.200 204.800
|
||||
127.300 201.200
|
||||
131.500 197.200
|
||||
135.700 192.600
|
||||
135.700 262.100
|
||||
135.500 268.400
|
||||
135.200 273.700
|
||||
134.900 277.900
|
||||
134.400 281.100
|
||||
133.800 283.200
|
||||
130.500 288.800
|
||||
125.900 292.700
|
||||
122.700 294.000
|
||||
118.300 295.000
|
||||
112.800 295.600
|
||||
106.100 295.800
|
||||
106.100 305.000
|
||||
POLYGON
|
||||
132.400 171.200
|
||||
129.000 176.600
|
||||
125.400 181.200
|
||||
121.600 185.300
|
||||
117.700 188.800
|
||||
113.700 191.600
|
||||
109.500 193.800
|
||||
105.100 195.300
|
||||
100.700 196.300
|
||||
96.100 196.600
|
||||
91.000 196.100
|
||||
86.500 194.600
|
||||
82.700 192.200
|
||||
79.500 189.000
|
||||
76.700 185.100
|
||||
74.000 180.200
|
||||
71.600 174.600
|
||||
69.400 168.200
|
||||
68.500 164.900
|
||||
67.700 161.300
|
||||
67.000 157.400
|
||||
66.300 153.200
|
||||
65.800 148.700
|
||||
65.300 144.000
|
||||
64.900 138.900
|
||||
64.600 133.500
|
||||
64.400 127.800
|
||||
64.300 121.800
|
||||
64.300 109.100
|
||||
64.400 103.000
|
||||
64.600 97.200
|
||||
65.200 86.500
|
||||
65.700 81.500
|
||||
66.200 76.900
|
||||
66.800 72.500
|
||||
67.500 68.400
|
||||
68.200 64.500
|
||||
69.000 61.000
|
||||
70.000 57.700
|
||||
72.000 51.800
|
||||
74.200 46.400
|
||||
76.700 41.600
|
||||
79.400 37.400
|
||||
82.400 33.700
|
||||
85.500 30.600
|
||||
89.300 28.300
|
||||
93.900 26.900
|
||||
99.300 26.400
|
||||
103.600 26.800
|
||||
107.800 27.900
|
||||
112.000 29.800
|
||||
116.100 32.500
|
||||
120.100 35.800
|
||||
124.100 40.000
|
||||
128.000 44.800
|
||||
131.900 50.500
|
||||
135.700 56.900
|
||||
135.700 165.300
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
POLYGON
|
||||
7321.400 504.900
|
||||
7334.500 553.900
|
||||
7303.900 553.900
|
||||
7311.200 578.600
|
||||
7341.700 578.600
|
||||
7355.600 624.300
|
||||
7345.400 614.900
|
||||
7338.100 609.800
|
||||
7330.100 606.200
|
||||
7322.800 603.300
|
||||
7315.600 601.800
|
||||
7309.000 600.400
|
||||
7302.500 599.600
|
||||
7287.900 599.600
|
||||
7278.500 600.400
|
||||
7269.800 602.500
|
||||
7266.100 603.300
|
||||
7261.800 604.700
|
||||
7255.200 608.300
|
||||
7251.600 612.000
|
||||
7248.700 615.600
|
||||
7246.500 618.500
|
||||
7244.300 622.100
|
||||
7241.400 627.200
|
||||
7239.200 634.500
|
||||
7237.000 644.600
|
||||
7235.600 657.700
|
||||
7235.600 670.000
|
||||
7236.300 681.700
|
||||
7237.800 691.100
|
||||
7246.500 717.200
|
||||
7258.100 744.800
|
||||
7266.100 757.900
|
||||
7274.100 769.500
|
||||
7283.600 778.900
|
||||
7295.900 789.100
|
||||
7309.000 797.800
|
||||
7322.100 804.300
|
||||
7335.200 810.200
|
||||
7348.300 813.800
|
||||
7357.700 815.200
|
||||
7367.900 816.000
|
||||
7382.500 816.000
|
||||
7391.900 815.200
|
||||
7401.400 812.300
|
||||
7409.400 808.700
|
||||
7418.100 802.200
|
||||
7421.000 800.000
|
||||
7425.400 794.900
|
||||
7429.700 787.700
|
||||
7431.900 782.600
|
||||
7432.600 777.500
|
||||
7433.400 767.300
|
||||
7432.600 759.300
|
||||
7431.900 752.100
|
||||
7427.500 737.600
|
||||
7380.300 578.600
|
||||
7410.100 578.600
|
||||
7403.500 551.700
|
||||
7374.500 551.700
|
||||
7361.400 504.500
|
||||
POLYGON
|
||||
7390.500 745.500
|
||||
7391.200 751.400
|
||||
7391.200 757.200
|
||||
7390.500 761.500
|
||||
7388.300 765.900
|
||||
7386.100 768.800
|
||||
7383.200 770.200
|
||||
7380.300 771.700
|
||||
7377.400 772.400
|
||||
7373.000 773.900
|
||||
7367.900 774.600
|
||||
7357.700 774.600
|
||||
7354.100 773.900
|
||||
7349.700 773.100
|
||||
7345.400 772.400
|
||||
7339.600 771.000
|
||||
7336.700 769.500
|
||||
7333.000 767.300
|
||||
7329.400 764.400
|
||||
7322.800 760.100
|
||||
7314.800 752.100
|
||||
7310.500 746.300
|
||||
7306.800 741.200
|
||||
7303.900 735.400
|
||||
7300.300 729.600
|
||||
7297.400 723.800
|
||||
7294.500 717.200
|
||||
7291.600 712.200
|
||||
7289.400 705.600
|
||||
7287.200 699.800
|
||||
7285.800 694.700
|
||||
7282.900 688.200
|
||||
7279.900 676.600
|
||||
7278.500 669.300
|
||||
7277.800 664.200
|
||||
7277.800 658.400
|
||||
7278.500 651.900
|
||||
7279.900 648.300
|
||||
7280.700 643.200
|
||||
7282.100 639.600
|
||||
7284.300 635.900
|
||||
7287.200 632.300
|
||||
7290.800 628.700
|
||||
7293.800 627.200
|
||||
7299.600 625.800
|
||||
7304.700 625.000
|
||||
7315.600 625.000
|
||||
7319.900 626.500
|
||||
7325.000 627.900
|
||||
7330.100 630.100
|
||||
7333.700 632.300
|
||||
7339.600 636.700
|
||||
7345.400 640.300
|
||||
7354.100 649.000
|
||||
7363.400 658.900
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
POLYGON
|
||||
260.600 37.500
|
||||
182.500 37.500
|
||||
182.500 82.500
|
||||
176.600 73.700
|
||||
170.100 65.800
|
||||
163.000 58.600
|
||||
155.500 52.200
|
||||
147.500 46.700
|
||||
139.200 41.900
|
||||
130.600 38.000
|
||||
121.800 34.800
|
||||
112.900 32.400
|
||||
103.800 30.800
|
||||
94.800 30.000
|
||||
85.800 30.000
|
||||
76.900 30.800
|
||||
68.100 32.300
|
||||
59.600 34.600
|
||||
51.500 37.700
|
||||
43.600 41.600
|
||||
36.300 46.200
|
||||
29.400 51.600
|
||||
23.100 57.800
|
||||
17.400 64.700
|
||||
12.500 72.400
|
||||
8.300 80.900
|
||||
4.900 90.100
|
||||
2.400 100.100
|
||||
0.900 110.800
|
||||
0.400 122.300
|
||||
0.400 328.700
|
||||
78.500 328.700
|
||||
78.500 160.200
|
||||
77.900 145.600
|
||||
78.800 132.700
|
||||
81.000 121.400
|
||||
84.400 111.700
|
||||
88.800 103.600
|
||||
94.100 97.000
|
||||
100.100 91.800
|
||||
106.700 88.000
|
||||
113.800 85.700
|
||||
121.300 84.600
|
||||
128.800 84.900
|
||||
136.400 86.300
|
||||
143.900 89.000
|
||||
151.200 92.900
|
||||
158.000 97.800
|
||||
164.300 103.900
|
||||
169.900 110.900
|
||||
174.600 119.000
|
||||
178.400 128.000
|
||||
181.100 137.900
|
||||
182.500 148.600
|
||||
182.500 328.700
|
||||
260.600 328.700
|
||||
|
|
@ -0,0 +1,332 @@
|
|||
POLYGON
|
||||
355.500 113.000
|
||||
347.000 104.800
|
||||
338.100 97.200
|
||||
328.800 90.300
|
||||
319.100 84.000
|
||||
309.100 78.300
|
||||
298.900 73.300
|
||||
288.400 68.900
|
||||
277.800 65.100
|
||||
267.000 62.000
|
||||
256.200 59.400
|
||||
245.300 57.500
|
||||
234.400 56.200
|
||||
223.600 55.400
|
||||
212.700 55.300
|
||||
202.000 55.700
|
||||
191.500 56.600
|
||||
181.000 58.100
|
||||
170.800 60.200
|
||||
160.800 62.700
|
||||
151.000 65.800
|
||||
141.600 69.400
|
||||
132.400 73.400
|
||||
123.500 77.900
|
||||
115.000 82.900
|
||||
106.800 88.200
|
||||
99.000 94.000
|
||||
91.600 100.200
|
||||
84.700 106.700
|
||||
78.100 113.500
|
||||
72.100 120.700
|
||||
66.400 128.200
|
||||
61.300 135.900
|
||||
56.600 143.900
|
||||
52.400 152.200
|
||||
48.700 160.600
|
||||
45.500 169.200
|
||||
42.800 177.900
|
||||
40.600 186.700
|
||||
38.900 195.600
|
||||
37.700 204.600
|
||||
37.000 213.600
|
||||
36.800 222.600
|
||||
37.200 231.500
|
||||
38.000 240.400
|
||||
39.300 249.100
|
||||
41.100 257.700
|
||||
43.300 266.100
|
||||
46.000 274.300
|
||||
49.200 282.200
|
||||
52.800 289.800
|
||||
56.800 297.100
|
||||
61.200 304.000
|
||||
66.000 310.500
|
||||
71.900 319.100
|
||||
78.300 327.300
|
||||
85.000 335.000
|
||||
92.100 342.300
|
||||
99.600 349.000
|
||||
107.300 355.300
|
||||
115.400 361.100
|
||||
123.700 366.400
|
||||
132.300 371.100
|
||||
141.100 375.400
|
||||
150.000 379.100
|
||||
159.200 382.300
|
||||
168.400 384.900
|
||||
177.800 387.100
|
||||
187.300 388.700
|
||||
196.800 389.800
|
||||
206.400 390.400
|
||||
216.000 390.500
|
||||
225.600 390.200
|
||||
235.100 389.300
|
||||
244.600 388.000
|
||||
253.900 386.200
|
||||
263.200 383.900
|
||||
272.300 381.300
|
||||
281.300 378.200
|
||||
290.100 374.800
|
||||
298.600 371.000
|
||||
306.900 366.900
|
||||
315.000 362.400
|
||||
322.800 357.700
|
||||
330.200 352.700
|
||||
337.400 347.500
|
||||
344.100 342.100
|
||||
350.500 336.500
|
||||
342.700 331.600
|
||||
335.100 326.500
|
||||
327.500 321.300
|
||||
320.000 316.000
|
||||
312.600 310.600
|
||||
305.300 305.000
|
||||
298.100 299.300
|
||||
291.000 293.500
|
||||
286.600 303.100
|
||||
281.400 312.000
|
||||
275.400 320.000
|
||||
268.900 327.200
|
||||
261.800 333.500
|
||||
254.300 338.900
|
||||
246.500 343.400
|
||||
238.400 346.900
|
||||
230.100 349.600
|
||||
221.800 351.200
|
||||
213.400 352.000
|
||||
205.100 351.700
|
||||
197.000 350.600
|
||||
189.000 348.500
|
||||
181.400 345.600
|
||||
174.000 341.700
|
||||
167.000 337.000
|
||||
160.400 331.500
|
||||
154.300 325.300
|
||||
148.800 318.200
|
||||
143.800 310.500
|
||||
139.400 302.200
|
||||
135.600 293.300
|
||||
132.400 283.900
|
||||
130.000 274.000
|
||||
128.200 263.700
|
||||
127.200 253.200
|
||||
127.000 242.400
|
||||
127.400 231.400
|
||||
128.700 220.400
|
||||
130.700 209.500
|
||||
133.400 198.700
|
||||
136.900 188.100
|
||||
141.200 177.900
|
||||
146.200 168.200
|
||||
152.000 159.000
|
||||
159.400 149.600
|
||||
167.100 141.100
|
||||
175.000 133.600
|
||||
183.200 126.900
|
||||
191.600 121.100
|
||||
200.100 116.200
|
||||
208.800 112.200
|
||||
217.600 109.100
|
||||
226.500 106.700
|
||||
235.300 105.200
|
||||
244.200 104.600
|
||||
253.000 104.700
|
||||
261.700 105.700
|
||||
270.300 107.400
|
||||
278.800 110.000
|
||||
287.100 113.300
|
||||
295.100 117.300
|
||||
303.000 122.200
|
||||
310.500 127.700
|
||||
317.700 134.000
|
||||
324.500 141.000
|
||||
330.200 134.900
|
||||
336.200 129.100
|
||||
342.400 123.500
|
||||
348.900 118.100
|
||||
POLYGON
|
||||
197.100 305.000
|
||||
197.100 67.900
|
||||
197.300 54.000
|
||||
197.500 48.800
|
||||
197.700 44.600
|
||||
198.100 41.500
|
||||
198.500 39.400
|
||||
200.000 35.000
|
||||
202.200 31.400
|
||||
205.100 28.700
|
||||
208.100 27.100
|
||||
211.900 25.800
|
||||
216.700 24.800
|
||||
222.400 24.200
|
||||
222.400 17.000
|
||||
135.700 0.000
|
||||
135.700 32.600
|
||||
131.900 28.100
|
||||
128.200 23.900
|
||||
124.500 20.100
|
||||
121.000 16.700
|
||||
117.600 13.700
|
||||
114.300 11.000
|
||||
111.100 8.700
|
||||
108.000 6.800
|
||||
103.900 4.700
|
||||
99.500 3.000
|
||||
95.000 1.700
|
||||
90.400 0.800
|
||||
85.500 0.200
|
||||
80.500 0.000
|
||||
75.000 0.200
|
||||
69.600 0.700
|
||||
64.400 1.600
|
||||
59.400 2.900
|
||||
54.500 4.500
|
||||
49.900 6.500
|
||||
45.300 8.800
|
||||
41.000 11.500
|
||||
36.800 14.600
|
||||
32.800 18.000
|
||||
29.000 21.800
|
||||
25.300 25.900
|
||||
21.800 30.400
|
||||
18.400 35.300
|
||||
15.900 39.400
|
||||
13.500 43.700
|
||||
11.400 48.100
|
||||
9.400 52.700
|
||||
7.600 57.400
|
||||
6.000 62.200
|
||||
4.600 67.200
|
||||
3.400 72.300
|
||||
2.300 77.500
|
||||
1.500 82.800
|
||||
0.800 88.300
|
||||
0.400 93.900
|
||||
0.100 99.700
|
||||
0.000 105.600
|
||||
0.100 111.100
|
||||
0.300 116.500
|
||||
0.700 121.800
|
||||
1.300 127.000
|
||||
2.000 132.100
|
||||
2.900 137.100
|
||||
3.900 142.000
|
||||
5.100 146.900
|
||||
6.400 151.600
|
||||
7.900 156.200
|
||||
9.600 160.700
|
||||
11.400 165.200
|
||||
13.800 170.300
|
||||
16.300 175.200
|
||||
19.000 179.800
|
||||
21.900 184.200
|
||||
24.900 188.300
|
||||
28.100 192.100
|
||||
31.500 195.700
|
||||
35.100 199.100
|
||||
38.800 202.100
|
||||
42.700 205.000
|
||||
47.100 207.800
|
||||
51.600 210.300
|
||||
56.200 212.400
|
||||
60.900 214.300
|
||||
65.600 215.700
|
||||
70.400 216.900
|
||||
75.300 217.700
|
||||
80.300 218.200
|
||||
85.300 218.400
|
||||
91.100 218.200
|
||||
96.500 217.500
|
||||
101.800 216.300
|
||||
106.700 214.700
|
||||
111.400 212.700
|
||||
115.200 210.500
|
||||
119.200 207.900
|
||||
123.200 204.800
|
||||
127.300 201.200
|
||||
131.500 197.200
|
||||
135.700 192.600
|
||||
135.700 262.100
|
||||
135.500 268.400
|
||||
135.200 273.700
|
||||
134.900 277.900
|
||||
134.400 281.100
|
||||
133.800 283.200
|
||||
130.500 288.800
|
||||
125.900 292.700
|
||||
122.700 294.000
|
||||
118.300 295.000
|
||||
112.800 295.600
|
||||
106.100 295.800
|
||||
106.100 305.000
|
||||
POLYGON
|
||||
132.400 171.200
|
||||
129.000 176.600
|
||||
125.400 181.200
|
||||
121.600 185.300
|
||||
117.700 188.800
|
||||
113.700 191.600
|
||||
109.500 193.800
|
||||
105.100 195.300
|
||||
100.700 196.300
|
||||
96.100 196.600
|
||||
91.000 196.100
|
||||
86.500 194.600
|
||||
82.700 192.200
|
||||
79.500 189.000
|
||||
76.700 185.100
|
||||
74.000 180.200
|
||||
71.600 174.600
|
||||
69.400 168.200
|
||||
68.500 164.900
|
||||
67.700 161.300
|
||||
67.000 157.400
|
||||
66.300 153.200
|
||||
65.800 148.700
|
||||
65.300 144.000
|
||||
64.900 138.900
|
||||
64.600 133.500
|
||||
64.400 127.800
|
||||
64.300 121.800
|
||||
64.300 109.100
|
||||
64.400 103.000
|
||||
64.600 97.200
|
||||
65.200 86.500
|
||||
65.700 81.500
|
||||
66.200 76.900
|
||||
66.800 72.500
|
||||
67.500 68.400
|
||||
68.200 64.500
|
||||
69.000 61.000
|
||||
70.000 57.700
|
||||
72.000 51.800
|
||||
74.200 46.400
|
||||
76.700 41.600
|
||||
79.400 37.400
|
||||
82.400 33.700
|
||||
85.500 30.600
|
||||
89.300 28.300
|
||||
93.900 26.900
|
||||
99.300 26.400
|
||||
103.600 26.800
|
||||
107.800 27.900
|
||||
112.000 29.800
|
||||
116.100 32.500
|
||||
120.100 35.800
|
||||
124.100 40.000
|
||||
128.000 44.800
|
||||
131.900 50.500
|
||||
135.700 56.900
|
||||
135.700 165.300
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,994 @@
|
|||
POLYGON
|
||||
142.528622059284 267.551290109461
|
||||
142.102196751295 267.420185967987
|
||||
141.749529509006 267.113055064981
|
||||
141.577471850572 266.658760651653
|
||||
141.692875294147 266.086165979212
|
||||
142.131916029511 265.612058832949
|
||||
142.278340367733 265.137320115869
|
||||
142.218843473254 264.659066632097
|
||||
142.040120510517 264.174415185755
|
||||
141.671777038036 263.174385621851
|
||||
141.655546857176 262.653241112535
|
||||
141.866871265827 262.114165857141
|
||||
142.434497265278 260.878669336145
|
||||
142.644948987423 260.228667333429
|
||||
142.759869007526 259.53216512472
|
||||
142.249853758274 259.066325500315
|
||||
141.621244816242 258.82417066366
|
||||
140.27787437862 258.563170984095
|
||||
139.469840882478 259.21368731529
|
||||
138.855295328556 259.973622396295
|
||||
138.383319912611 260.81505013973
|
||||
138.002996830402 261.710044458216
|
||||
137.313636450229 263.549028470819
|
||||
136.902763543783 264.437165990179
|
||||
136.379871754108 265.267165735071
|
||||
136.418364795057 265.931673623329
|
||||
136.370615182577 266.459297433203
|
||||
136.25165368071 266.860692463522
|
||||
136.076511053501 267.146514013117
|
||||
135.617805479227 267.414057865446
|
||||
135.114744572101 267.347171380823
|
||||
134.687574444471 267.031096949881
|
||||
134.456541208683 266.551076963251
|
||||
134.541890977083 265.992353811567
|
||||
135.063869862018 265.440169885462
|
||||
134.789603738247 263.620169236963
|
||||
134.846972895919 262.729410364931
|
||||
135.029744533954 261.865417077845
|
||||
135.334719402848 261.038642838304
|
||||
135.758698253093 260.259541108911
|
||||
136.298481835185 259.538565352266
|
||||
136.950870899616 258.88616903097
|
||||
136.456704614816 259.032862379854
|
||||
136.023042349277 258.975027635401
|
||||
135.262745289264 258.498290613001
|
||||
134.521010546146 257.960991456812
|
||||
134.110551176725 257.827454045122
|
||||
133.648868946491 257.868163659876
|
||||
131.771746067463 259.540917947596
|
||||
131.013418344913 260.511077239817
|
||||
130.784190772234 261.07742540509
|
||||
130.694874195514 261.716170862024
|
||||
130.095355777202 262.825296953028
|
||||
129.623996166645 263.978671624964
|
||||
128.757870106159 266.334167077845
|
||||
128.466633049904 266.544768348043
|
||||
128.103653339802 266.666153981989
|
||||
127.319872288166 266.656795099085
|
||||
126.977774111686 266.533808961218
|
||||
126.721339611469 266.337123945063
|
||||
126.589920370041 266.07061924011
|
||||
126.622867969928 265.738174035852
|
||||
127.182927785574 265.450063451832
|
||||
127.536338953434 265.065872028177
|
||||
127.732578037439 264.608298584526
|
||||
127.82112160152 264.100041940515
|
||||
127.873028425632 263.022274329966
|
||||
127.935344813524 262.498161002701
|
||||
128.087871937214 262.014159753626
|
||||
128.509574560581 261.012352302378
|
||||
129.059246448932 260.049916818445
|
||||
130.272869495807 258.216170862024
|
||||
129.391635088382 257.907841041391
|
||||
128.419744877277 257.669541909998
|
||||
127.461916593967 257.692056491678
|
||||
127.020999966322 257.860738619869
|
||||
126.622867969928 258.166167810266
|
||||
124.611995129047 261.362794473474
|
||||
123.676355151592 262.984404399698
|
||||
122.898868946491 264.671172693079
|
||||
122.211719242988 265.073309406345
|
||||
121.712104229389 265.135779216593
|
||||
121.393777934967 264.938163801735
|
||||
121.250494388996 264.560044839685
|
||||
121.27600762075 264.081004008358
|
||||
121.464071659504 263.580622985666
|
||||
121.80844053453 263.138483449524
|
||||
122.302868275104 262.834167077845
|
||||
122.189766077457 261.832194074696
|
||||
122.181979565082 261.021435573404
|
||||
122.282919077335 260.356762692039
|
||||
122.495994953571 259.79304654867
|
||||
123.272197155414 258.787968948191
|
||||
123.842144159733 258.256349727219
|
||||
124.537868885456 257.645171716516
|
||||
123.748511819301 257.374903753107
|
||||
122.896247295795 257.195293023889
|
||||
122.020543841778 257.159872129267
|
||||
121.160869984089 257.322173669641
|
||||
120.386869324504 258.088989481037
|
||||
119.718418864666 259.185653522318
|
||||
118.521497158466 261.83279187948
|
||||
117.904690219222 263.115398987835
|
||||
117.21676209396 264.19211991102
|
||||
116.413544936238 264.929021045273
|
||||
115.954900518192 265.128184940373
|
||||
115.450870899616 265.192168786829
|
||||
115.166447786747 264.860210492914
|
||||
115.035494236408 264.45353658468
|
||||
115.103870777546 263.603164270227
|
||||
115.627354351936 263.351257219618
|
||||
115.963794617115 263.002400472467
|
||||
116.161179868637 262.580770030325
|
||||
116.267498402057 262.110541894739
|
||||
116.398888496814 261.120996549433
|
||||
116.519936649261 260.65003134281
|
||||
116.741871265827 260.227172448938
|
||||
117.68249836391 258.746419503992
|
||||
118.752872852741 257.396163537805
|
||||
118.087013749538 256.878038719004
|
||||
117.316247372089 256.564664438074
|
||||
116.494293002544 256.474790408914
|
||||
115.674869923053 256.627166345423
|
||||
114.843030652164 257.505357637709
|
||||
114.159901945053 258.523809507196
|
||||
112.940620331226 260.66729314596
|
||||
112.254889479039 261.635223999327
|
||||
111.41871329969 262.429213598078
|
||||
110.357302820442 262.970711484259
|
||||
109.718763164377 263.122229017024
|
||||
108.995869068561 263.181167199915
|
||||
109.045528045057 262.41154618532
|
||||
109.332010833679 261.738698556726
|
||||
109.782579278706 261.131522848909
|
||||
110.324495224415 260.558917596643
|
||||
111.391416994987 259.393012597864
|
||||
111.770946508406 258.7375099209
|
||||
111.950870899616 257.992171838587
|
||||
112.334840206562 257.454123571222
|
||||
112.82587185329 256.962295129602
|
||||
113.96187248653 256.155166223352
|
||||
112.279371170459 255.593667581385
|
||||
111.447777358947 255.509416892832
|
||||
110.485870747028 255.683166101282
|
||||
109.948712555824 256.31251813442
|
||||
109.536417631565 257.010728910273
|
||||
108.905995754657 258.517165735071
|
||||
108.233761457859 260.009354665583
|
||||
107.769201008735 260.689755573576
|
||||
107.158871082721 261.294173791712
|
||||
106.588244347034 261.194913461512
|
||||
106.091869739948 260.87216146261
|
||||
106.650041489063 259.970709398096
|
||||
106.873244671283 258.985538080042
|
||||
106.984871296344 256.801162317102
|
||||
107.596792666374 256.120214298075
|
||||
108.285495666919 255.562543466394
|
||||
109.715870289264 254.566161706751
|
||||
109.036246208606 253.821662500208
|
||||
108.226871876178 253.077163293665
|
||||
107.088714210449 253.755198552912
|
||||
106.104120163379 254.572917535608
|
||||
105.708725651859 255.057421222036
|
||||
105.398901431022 255.60476119787
|
||||
105.190373962877 256.224242582624
|
||||
105.09886970943 256.925170495813
|
||||
104.89808408743 257.382904275959
|
||||
104.625275163112 257.724856212442
|
||||
103.914868740497 258.128915384119
|
||||
103.070213107525 258.272349670237
|
||||
102.193870930134 258.290160730188
|
||||
102.207573322712 257.926836088007
|
||||
102.435494808613 257.598292901819
|
||||
102.71010389751 257.274436071222
|
||||
102.863869099079 256.925170495813
|
||||
102.9505883736 255.782791211908
|
||||
103.298119930683 254.731166436975
|
||||
103.925026087223 253.814541890924
|
||||
104.849869160114 253.077163293665
|
||||
106.069870380817 252.794416024988
|
||||
106.585464386402 252.48682196409
|
||||
106.935871509968 252.009170129602
|
||||
106.525791151582 251.672740116423
|
||||
106.100042848049 251.515244558161
|
||||
105.22249546474 251.596290185755
|
||||
103.509869007526 252.357162072962
|
||||
102.911275712906 252.846228435343
|
||||
102.408120064197 253.458669259851
|
||||
101.622871784626 254.839171960657
|
||||
101.872937647758 255.136575206821
|
||||
101.959527162967 255.47541697294
|
||||
101.737620739399 256.161164834803
|
||||
101.147839693485 256.663913085764
|
||||
100.774585930763 256.774005338257
|
||||
100.380871204792 256.751159265345
|
||||
100.088104514538 256.564915731256
|
||||
99.9744943661077 256.266917779749
|
||||
99.958870319782 255.55917318136
|
||||
100.489122500776 255.143538489645
|
||||
100.732511131225 254.659244611566
|
||||
100.765994934498 253.591788842981
|
||||
100.759738704322 253.062181725805
|
||||
100.873916117607 252.571024968927
|
||||
101.210351472853 252.145095959013
|
||||
101.870869068561 251.811172082727
|
||||
104.278870014606 250.296172693079
|
||||
104.104886202274 250.019433334177
|
||||
103.779495624958 249.793790414637
|
||||
103.374791769443 249.689085796183
|
||||
102.962868122516 249.77516134054
|
||||
102.208858577667 250.200904115742
|
||||
101.589228062092 250.737787082498
|
||||
101.082449166237 251.36429481179
|
||||
100.666994480549 252.058911874597
|
||||
100.023948101459 253.566412284677
|
||||
99.4878696483953 255.088164880579
|
||||
98.9816197437627 255.389165475672
|
||||
98.4198688549382 255.336165979212
|
||||
98.1039165539129 255.06768377096
|
||||
98.0694946331365 254.715293481653
|
||||
98.2958683056218 254.020171716516
|
||||
98.9904201162441 253.354261353319
|
||||
99.3969011587484 252.537027910059
|
||||
99.7856201214177 250.718543603723
|
||||
99.98784263259 249.852268650835
|
||||
100.341963557659 249.104622438257
|
||||
100.957975192128 248.543092921083
|
||||
101.398562617732 248.35321190924
|
||||
101.945869831501 248.235168054407
|
||||
101.701554922519 247.874419644182
|
||||
101.673228649555 247.307608201807
|
||||
101.827691702305 246.610389902895
|
||||
102.131744770466 245.858420923059
|
||||
102.552188543735 245.127357437914
|
||||
103.055823711811 244.492855623072
|
||||
103.60945096439 244.030571654146
|
||||
104.179870991169 243.816161706751
|
||||
104.821291951595 243.291337564295
|
||||
105.528245357929 242.966292932337
|
||||
106.250011710582 242.942182138269
|
||||
106.935871509968 243.320159509485
|
||||
106.428417114673 243.690194919413
|
||||
105.818495182453 243.860166147058
|
||||
105.190010933338 243.983637168711
|
||||
104.62686958736 244.214171960657
|
||||
103.983510164676 244.865406349008
|
||||
103.260744480549 245.657544687097
|
||||
103.010824499784 246.077361151283
|
||||
102.910541204868 246.497493579691
|
||||
103.016390679537 246.906305297916
|
||||
103.384869007526 247.292159631555
|
||||
103.708803465722 246.658101185863
|
||||
104.11390170282 246.091728999918
|
||||
105.119871048389 245.135419442957
|
||||
106.307340113579 244.369983032053
|
||||
107.580871967731 243.742171838587
|
||||
108.428620247303 243.863162591761
|
||||
108.806838361679 244.004006936853
|
||||
109.070869831501 244.338164880579
|
||||
108.634932903705 244.65714986593
|
||||
108.136371044574 244.899539544886
|
||||
107.108871845661 245.331161096399
|
||||
105.874355880676 246.016150548761
|
||||
105.115245727955 246.813541009729
|
||||
104.732448069511 247.81924255163
|
||||
104.62686958736 249.12916524679
|
||||
105.026422647892 249.286486819094
|
||||
105.310229448734 249.278479173487
|
||||
105.502137689052 249.140064671343
|
||||
105.625995068012 248.906165674036
|
||||
105.764948038517 248.291603639429
|
||||
105.917869953571 247.714171960657
|
||||
106.734900741039 246.87446530134
|
||||
107.630869297443 246.134790017908
|
||||
108.619838265835 245.651053264444
|
||||
109.153592480479 245.553882822102
|
||||
109.715870289264 245.579162195032
|
||||
109.955151168762 245.776885583704
|
||||
110.250120071827 245.895667627161
|
||||
110.470464198051 246.060947015589
|
||||
110.485870747028 246.398162439173
|
||||
109.150214342533 246.998321130579
|
||||
108.524187026678 247.478201105898
|
||||
107.965120701252 248.050166681116
|
||||
107.50233566588 248.69338174135
|
||||
107.165152220188 249.387010171717
|
||||
106.982890663801 250.110215857332
|
||||
106.984871296344 250.842162683313
|
||||
107.28324547237 251.283044412439
|
||||
107.439228920398 251.463591888254
|
||||
107.655868915973 251.537170007532
|
||||
108.361431269108 250.257667615717
|
||||
109.318619160114 249.119914605921
|
||||
110.462182669101 248.154286458795
|
||||
111.726871876178 247.391158654993
|
||||
112.044730572162 247.358228042429
|
||||
112.313745884357 247.478669717615
|
||||
112.620869068561 247.938170984095
|
||||
112.518357662616 248.46957902581
|
||||
112.271588472782 248.843323066538
|
||||
111.915459899364 249.09955166251
|
||||
111.48487034267 249.278413369959
|
||||
110.53990188068 249.564630344217
|
||||
110.095319775997 249.752282723492
|
||||
109.715870289264 250.023162439173
|
||||
109.457870749889 250.557148530786
|
||||
109.309370426594 251.149539544886
|
||||
109.070869831501 252.257171228235
|
||||
109.683401553093 252.911874130075
|
||||
110.414620308338 253.452294900721
|
||||
111.224964229522 253.866902187174
|
||||
112.074871448932 254.144164636438
|
||||
112.236324196814 253.38570000202
|
||||
112.29718324369 252.600445821588
|
||||
112.366120247303 251.065913751429
|
||||
112.498698210476 250.374808326071
|
||||
112.779682485519 249.773258283441
|
||||
113.27132307565 249.290349855726
|
||||
114.035869984089 248.95516927511
|
||||
114.926620869098 249.141662195032
|
||||
115.275340227543 249.388567045038
|
||||
115.500873951374 249.77516134054
|
||||
115.345216302334 250.314134671991
|
||||
115.001120953022 250.774169519251
|
||||
114.596650866924 251.206452443903
|
||||
114.259869007526 251.662170007532
|
||||
113.930493740497 253.126666620081
|
||||
113.787868885456 254.666167810266
|
||||
114.407808808742 255.137154414957
|
||||
115.100121883808 255.401044442957
|
||||
116.617870716511 255.55917318136
|
||||
116.552996067463 254.137775972193
|
||||
116.844370274006 252.788287713831
|
||||
117.4942449612 251.582989290064
|
||||
117.954323617874 251.056999042337
|
||||
118.504871754108 250.59416158468
|
||||
118.987525658814 250.749370734846
|
||||
119.334183631597 250.935227676933
|
||||
119.678433565555 251.387505843943
|
||||
119.655465124307 251.928237899845
|
||||
119.383121876178 252.534665658777
|
||||
118.561685232578 253.853575542276
|
||||
118.248278973757 254.520541295116
|
||||
118.156872181354 255.162170007532
|
||||
118.198937488852 255.707615956371
|
||||
118.527714042125 256.111358478372
|
||||
119.063443942128 256.379631921356
|
||||
119.726369289814 256.518670633142
|
||||
120.436732186137 256.534708961552
|
||||
121.114774732052 256.433981254404
|
||||
121.680739028512 256.22272185952
|
||||
122.054867176471 255.90716512472
|
||||
122.273181347309 254.544834688013
|
||||
122.405619053303 253.126536920374
|
||||
122.561040846763 252.460472896402
|
||||
122.84068146175 251.857304170435
|
||||
123.293103544174 251.342659786051
|
||||
123.966869739948 250.942168786829
|
||||
124.242917684971 250.84708960325
|
||||
124.500496296344 250.929292276209
|
||||
124.884869007526 251.364165857141
|
||||
124.676432995258 252.56772907049
|
||||
124.27712097591 253.824916436975
|
||||
124.146980492531 254.452525391882
|
||||
124.138433842121 255.068227842157
|
||||
124.307918636261 255.663586273497
|
||||
124.71187248653 256.230163171595
|
||||
125.925123600422 256.800792291468
|
||||
126.593435673176 256.935120656794
|
||||
127.268871693073 256.925170495813
|
||||
127.53687633401 256.271852150267
|
||||
127.505291728435 255.618511274164
|
||||
127.001744656025 254.330417230432
|
||||
126.758977128325 253.704991712873
|
||||
126.675010232387 253.098198964899
|
||||
126.864441437779 252.514702811544
|
||||
127.441868214069 251.959167077845
|
||||
128.177995113788 251.922290399378
|
||||
128.528479365764 251.966617181604
|
||||
128.85786858028 252.183166101282
|
||||
128.98015409535 252.590843215292
|
||||
128.939337877689 252.963586881464
|
||||
128.599869160114 253.64154012472
|
||||
128.302400259433 254.291558339899
|
||||
128.314083812891 254.629383220976
|
||||
128.509869007526 254.988174035852
|
||||
128.869701264559 255.294798507994
|
||||
129.167213110386 255.667810514276
|
||||
129.68936958736 256.459292962854
|
||||
129.971061227976 256.800911321943
|
||||
130.304526476322 257.055213048761
|
||||
130.718288837133 257.183772101705
|
||||
131.240871815143 257.148162439173
|
||||
133.226871876178 256.925170495813
|
||||
132.851370243488 255.115415170496
|
||||
132.727650551258 254.204914882486
|
||||
132.82986870235 253.250167444055
|
||||
133.091044349728 252.910889371937
|
||||
133.300199536739 252.484823062723
|
||||
133.689246563373 251.574918344324
|
||||
133.932537419854 251.192376240795
|
||||
134.250605849682 250.925638511484
|
||||
134.675151361285 250.825353309219
|
||||
135.237873463093 250.942168786829
|
||||
135.508543638645 251.095620229547
|
||||
135.579246906696 251.351539209192
|
||||
135.510263590275 251.626020505732
|
||||
135.361874012409 251.835158899134
|
||||
134.872424913703 252.263231768911
|
||||
134.588980464397 252.754713132685
|
||||
134.473138136922 253.293888464277
|
||||
134.486495403705 253.865043237513
|
||||
134.747198609768 255.040433004206
|
||||
135.063869862018 256.155166223352
|
||||
135.361319033561 256.775079354351
|
||||
135.785776524006 257.248227908914
|
||||
136.30928119844 257.581595822876
|
||||
136.903871921955 257.782167032068
|
||||
138.194466976581 257.812855079477
|
||||
138.834549037872 257.65693978936
|
||||
139.4338726086 257.396163537805
|
||||
138.868745235859 255.168416574305
|
||||
138.812167672573 254.07291729719
|
||||
139.085873035846 252.903167321985
|
||||
139.044638542591 252.392777755564
|
||||
139.046247868 251.752542093103
|
||||
139.12185934013 251.503234669273
|
||||
139.278670219837 251.364868953531
|
||||
139.540176658092 251.385246023243
|
||||
139.929874805866 251.612166955774
|
||||
140.28958196765 251.907282724684
|
||||
140.507293967663 252.227102353876
|
||||
140.712247280536 252.900165155237
|
||||
140.935764340816 253.549979284113
|
||||
141.176681025086 253.840738072699
|
||||
141.568874744831 254.095168664759
|
||||
141.720872311054 256.062415674036
|
||||
141.907216100155 257.055323198145
|
||||
142.337871937214 257.992171838587
|
||||
143.279169110714 258.384171321695
|
||||
144.392497448383 258.575917795008
|
||||
145.515013961254 258.488288238352
|
||||
146.028829349337 258.314981504982
|
||||
146.483875660358 258.042159631555
|
||||
145.711528806148 257.068646028345
|
||||
145.069121746479 256.006537988489
|
||||
144.780341414867 254.851240709131
|
||||
144.838463438807 254.237210228746
|
||||
145.068874744831 253.598159387415
|
||||
144.62053732401 253.264739796226
|
||||
144.459684876857 252.851175620859
|
||||
144.528801633177 252.423009857243
|
||||
144.770371822773 252.045785501306
|
||||
145.126879675446 251.785045548981
|
||||
145.540809421001 251.706332996195
|
||||
145.954645289241 251.875190838879
|
||||
146.310871509968 252.357162072962
|
||||
146.270370869098 253.089292123621
|
||||
146.061870960651 253.74716146261
|
||||
147.05221465057 254.618043020075
|
||||
147.837621120868 255.668170526331
|
||||
148.548402099071 256.788044050043
|
||||
149.314869312702 257.868163659876
|
||||
150.162512330471 258.175461604898
|
||||
151.105496792255 258.240792825525
|
||||
152.034417895733 258.064061477487
|
||||
152.839870838581 257.645171716516
|
||||
151.852308062969 256.818670585459
|
||||
151.195121197162 255.78291852743
|
||||
150.863809136806 254.579541995829
|
||||
150.853870777546 253.250167444055
|
||||
150.512499241291 253.061166360681
|
||||
150.207874683796 252.779159143274
|
||||
150.171656040607 252.433212831324
|
||||
150.326124576984 252.15504415304
|
||||
150.778873829303 251.662170007532
|
||||
151.200938372074 251.829241409605
|
||||
151.515952019153 252.092746808832
|
||||
151.927248386799 252.819293573206
|
||||
152.217606453357 253.662278249567
|
||||
152.591869739948 254.442168786829
|
||||
153.099512962757 255.30118449003
|
||||
153.767748264728 256.099542215174
|
||||
155.371876148639 257.570159509485
|
||||
156.390905289112 257.400103166407
|
||||
157.395872501789 257.157668664759
|
||||
158.38209143108 257.077980592554
|
||||
159.344875721393 257.396163537805
|
||||
158.960578231273 256.033835246866
|
||||
158.338998226581 254.746038034265
|
||||
157.494105367122 253.542054488962
|
||||
156.439869312702 252.431167199915
|
||||
156.46501584178 252.139253213709
|
||||
156.646278647838 251.903555467432
|
||||
156.941025180875 251.730132177179
|
||||
157.306622890888 251.625041559046
|
||||
158.079841641842 251.644091203516
|
||||
158.40219758278 251.78034789831
|
||||
158.62487450069 252.009170129602
|
||||
158.54236125773 252.482238456314
|
||||
158.593090681492 252.870967223947
|
||||
158.984871296344 253.467546060388
|
||||
159.581403879581 253.943186595743
|
||||
160.163875965534 254.442168786829
|
||||
162.000873951374 257.322173669641
|
||||
162.817122845112 257.433791711634
|
||||
163.763874439655 257.471160486048
|
||||
164.849997906147 257.747163369959
|
||||
165.404544143139 257.830604389017
|
||||
165.972874073444 257.744170739954
|
||||
166.212240455805 257.1427897659
|
||||
166.032310156284 256.555810287302
|
||||
165.559786258398 255.978603705471
|
||||
164.921371845661 255.406541421717
|
||||
163.653683809696 254.259335353678
|
||||
163.277816353498 253.674934372013
|
||||
163.24287071651 253.077163293665
|
||||
162.494248775898 252.474795892542
|
||||
162.240077523647 252.113185956781
|
||||
162.248875050007 251.612166955774
|
||||
162.658563761173 251.318376555746
|
||||
163.012576965748 251.219527318781
|
||||
163.315707592426 251.282279386824
|
||||
163.572748569904 251.473292901819
|
||||
163.967733292041 252.106744840448
|
||||
164.235874561725 252.853164270227
|
||||
165.4554057402 253.414371087854
|
||||
166.491374401508 254.287292077845
|
||||
167.318092135845 255.374148919886
|
||||
167.909870533405 256.577163293665
|
||||
168.634591607509 256.87496359617
|
||||
169.424373058735 256.853543832605
|
||||
170.938869862018 256.403167321985
|
||||
170.951590566097 255.731665447061
|
||||
170.687373547016 255.069165780847
|
||||
170.306906012951 254.434415176218
|
||||
169.970875172077 253.846160486048
|
||||
169.002249149738 253.061290338343
|
||||
168.678670553623 252.551151349848
|
||||
168.629871754108 251.959167077845
|
||||
168.239928586541 251.888723507231
|
||||
167.903574971615 251.701244428461
|
||||
167.446996120868 251.118289544886
|
||||
167.35445074564 250.794368639295
|
||||
167.370854644237 250.496522023981
|
||||
167.510047746955 250.26052714855
|
||||
167.785869984089 250.12216146261
|
||||
168.688621906696 250.289916589563
|
||||
169.045873073993 250.541513040369
|
||||
169.274876026569 250.942168786829
|
||||
169.192808149515 251.253115430181
|
||||
169.241967348514 251.443745687311
|
||||
169.607122806965 251.587291314905
|
||||
170.116654066501 251.619274213617
|
||||
170.516872791706 251.786162927454
|
||||
171.42362215942 252.665900304621
|
||||
172.148871807514 253.703792169397
|
||||
172.827622680126 254.788370206659
|
||||
173.594875721393 255.808166101282
|
||||
174.510047583042 256.121151759928
|
||||
175.478750614582 256.096543863123
|
||||
177.418873218952 255.73316915304
|
||||
177.42771589583 255.235086336439
|
||||
177.275671629368 254.792586400812
|
||||
176.646000294147 254.017287805384
|
||||
175.844015268741 253.293178632563
|
||||
175.1838726086 252.506164148157
|
||||
174.476498035846 252.415916040247
|
||||
174.171512512623 252.306762292688
|
||||
173.991871265827 252.009170129602
|
||||
174.302623180805 251.450791909998
|
||||
174.83687248653 251.11517293722
|
||||
175.578072143851 251.025549366777
|
||||
176.26965406364 251.223749711817
|
||||
176.906344933568 251.646504595583
|
||||
177.482871441303 252.230544641321
|
||||
178.434338120876 253.629402711695
|
||||
178.798731668053 254.31768198282
|
||||
179.081867603718 254.914168908899
|
||||
180.51237526363 254.615792825525
|
||||
181.235690025745 254.431961372202
|
||||
182.035877613483 254.318160608118
|
||||
181.624607948719 253.218849017923
|
||||
181.073746113239 252.226415231531
|
||||
180.401948837696 251.336357429331
|
||||
179.627872852741 250.544173791712
|
||||
179.605296997486 250.234263017481
|
||||
179.745750812946 249.982665613001
|
||||
180.198871998249 249.700164392298
|
||||
180.750604508577 249.826381101911
|
||||
181.199843553959 250.098823621576
|
||||
181.930624393879 250.895167901819
|
||||
182.670780806003 251.714760854547
|
||||
183.131739316641 252.016264214819
|
||||
183.699879078327 252.183166101282
|
||||
184.084246067463 252.726041391199
|
||||
184.202042250095 253.017494037455
|
||||
184.170872120319 253.325164392298
|
||||
185.685871509968 253.250167444055
|
||||
185.750922905414 252.813052732205
|
||||
185.730164824186 252.436332091396
|
||||
185.476765303074 251.831055476969
|
||||
185.016763089357 251.368302508896
|
||||
184.441248325763 250.982038095301
|
||||
183.841311155019 250.606227144306
|
||||
183.308041719852 250.174834564035
|
||||
182.932530162988 249.621825262611
|
||||
182.805866627155 248.881164148157
|
||||
183.324567375837 248.508855357473
|
||||
183.941387800632 248.516258313959
|
||||
184.614293215929 248.812364950483
|
||||
185.301248936115 249.306167199915
|
||||
186.54917254871 250.522826268976
|
||||
187.026071069895 251.063666954344
|
||||
187.348881153522 251.438170984095
|
||||
188.103248981891 251.646287515467
|
||||
188.838871387897 251.612166955774
|
||||
188.731433330236 250.958199605053
|
||||
188.468933729587 250.412244632547
|
||||
188.084841011224 249.947219773834
|
||||
187.612623600422 249.53604276449
|
||||
186.537688402591 248.766903236216
|
||||
185.511875538288 247.888167932337
|
||||
185.52449837154 247.329417779749
|
||||
185.602856068073 247.106014325922
|
||||
185.834873585163 246.994170739954
|
||||
186.376623748003 247.007386699026
|
||||
186.873923448978 247.122978284662
|
||||
187.780500797687 247.558913781946
|
||||
188.645264295994 248.097228124445
|
||||
189.5588726086 248.533172204798
|
||||
190.169998554645 249.315415933435
|
||||
190.448889641224 249.6857302931
|
||||
190.799869923053 249.949172571009
|
||||
191.085573760925 249.308977588718
|
||||
190.991483597217 248.759510829752
|
||||
190.619681803642 248.272810980385
|
||||
190.072250751911 247.820916726892
|
||||
188.858830360828 246.909699752634
|
||||
188.3970057649 246.394454404419
|
||||
188.167881397663 245.80216939718
|
||||
187.007627872883 245.389916971033
|
||||
186.52734580463 245.030978515451
|
||||
186.181873707233 244.51116903097
|
||||
186.160422710834 244.279924198692
|
||||
186.302965549885 244.143964126413
|
||||
186.559837727009 244.098449215
|
||||
186.881374744831 244.13853986532
|
||||
187.519785313068 244.45617945463
|
||||
187.737329868732 244.724049195354
|
||||
187.820881275593 245.058166101282
|
||||
188.068867115436 245.058166101282
|
||||
188.093994526325 244.545545175379
|
||||
188.180949119983 244.278967216318
|
||||
188.416874317585 244.089171960657
|
||||
188.734436420856 244.118274762934
|
||||
189.021625904499 244.263537957971
|
||||
189.229690937458 244.501618459528
|
||||
189.309879688678 244.80917318136
|
||||
189.269563732801 245.043443992441
|
||||
189.336311010776 245.216930940454
|
||||
189.688619999347 245.445537164514
|
||||
190.16205611652 245.622959688013
|
||||
190.551868824421 245.877166345423
|
||||
191.659370808063 247.180543496912
|
||||
192.562870411335 248.633163049524
|
||||
192.938801637052 248.406994819348
|
||||
193.171949712692 248.143950417345
|
||||
193.266796974598 247.534010484522
|
||||
192.961213318763 246.856898024385
|
||||
192.368999866901 246.166167810266
|
||||
191.603957740722 245.515374615496
|
||||
190.779888061939 244.958073213404
|
||||
190.010591952263 244.547818377321
|
||||
189.409870533405 244.338164880579
|
||||
189.667120365558 243.689410760706
|
||||
190.129871754108 243.096160486048
|
||||
190.799869923053 243.146163537805
|
||||
191.781840233265 244.15039785177
|
||||
192.807873157917 245.147788598841
|
||||
193.680154709278 246.242866113489
|
||||
193.996821848808 246.859703138178
|
||||
194.200870899616 247.540160730188
|
||||
194.564129261432 247.37578923971
|
||||
194.796879200397 247.044173791712
|
||||
194.737574575601 246.223557337826
|
||||
194.41095366901 245.600825145548
|
||||
193.901075301824 245.113140746658
|
||||
193.291998295246 244.697667672937
|
||||
192.667781470476 244.291569456165
|
||||
192.112483648716 243.832009628122
|
||||
191.710163651167 243.256151720589
|
||||
191.54488029903 242.501159265345
|
||||
191.800878672062 242.576400115793
|
||||
192.010378269611 242.547292306726
|
||||
192.285129217563 242.699868038004
|
||||
192.48189586228 242.933672293728
|
||||
192.736881641803 243.320159509485
|
||||
193.698282627521 243.978118970697
|
||||
194.604374317585 244.928294732874
|
||||
195.277967838703 246.030156209772
|
||||
195.472206263004 246.594053283041
|
||||
195.541874317585 247.143172815149
|
||||
195.572453169285 247.09313972265
|
||||
195.731001285969 247.059417321985
|
||||
195.774400346172 247.071406071589
|
||||
195.977004675327 247.29952509672
|
||||
197.174879459797 248.038537576502
|
||||
197.244438985716 248.080712723111
|
||||
197.463313726841 248.254011943643
|
||||
197.704878239094 248.449918344324
|
||||
197.764942316471 248.594449355905
|
||||
197.850880054889 248.95516927511
|
||||
197.922702429949 249.171430572575
|
||||
198.066795496402 249.591587856119
|
||||
198.426996616779 250.742791726892
|
||||
198.570706127344 251.323438986843
|
||||
198.641889242588 251.807183578318
|
||||
198.604346690832 252.118825837677
|
||||
198.421879200397 252.183166101282
|
||||
198.001622466503 251.940796985929
|
||||
197.824517635761 251.594950750177
|
||||
197.776249317585 250.643920495813
|
||||
197.693328647075 250.064283266371
|
||||
197.430045513569 249.432262494867
|
||||
196.880521325527 248.760631575888
|
||||
195.938877491413 248.062163904016
|
||||
195.21887627071 248.062163904016
|
||||
195.906389204918 248.655477598017
|
||||
196.492733864246 249.328290536707
|
||||
196.969742385803 250.066915586298
|
||||
197.329246906696 250.857665613001
|
||||
197.563079564033 251.686853483026
|
||||
197.663072494922 252.540792062586
|
||||
197.621057836471 253.40579421789
|
||||
197.428867725788 254.268172815149
|
||||
196.764150856195 253.59375093848
|
||||
196.32404628223 252.69385988981
|
||||
195.722002415119 250.702920511072
|
||||
195.362227318941 249.854497298305
|
||||
194.831392912327 249.265855148142
|
||||
194.470916623382 249.106862146115
|
||||
194.03058129376 249.058306619232
|
||||
193.498022185771 249.135352637326
|
||||
192.860874561725 249.353164270227
|
||||
193.557114301382 249.653296723669
|
||||
194.042532591282 250.101788595026
|
||||
194.369184492288 250.663155689543
|
||||
194.589125065265 251.301913812464
|
||||
194.917092470585 252.669666364496
|
||||
195.129229424654 253.327692404097
|
||||
195.442875294147 253.921172693079
|
||||
195.420877842365 254.920167520349
|
||||
195.306192068516 255.401385143106
|
||||
195.04488029903 255.808166101282
|
||||
194.630868313966 255.366066708868
|
||||
194.39022269672 254.84161956579
|
||||
194.182375339924 253.663291528528
|
||||
193.928027777134 252.508400991266
|
||||
193.629256902395 252.013250723188
|
||||
193.133869556843 251.612166955774
|
||||
192.307993320881 250.854920938318
|
||||
191.79975810474 250.662671401804
|
||||
191.221866993366 250.768172815149
|
||||
190.921475229917 251.187075093096
|
||||
190.903540281711 251.560403421228
|
||||
191.096800683199 251.902958586519
|
||||
191.42999496883 252.22954137594
|
||||
192.231139330326 252.893992975061
|
||||
192.556566475092 253.261463358705
|
||||
192.736881641803 253.672164514368
|
||||
193.030611125885 254.221695854967
|
||||
193.096060661731 254.798789575403
|
||||
192.894619373737 255.978663995569
|
||||
192.803978292404 256.55294461519
|
||||
192.837556747852 257.097787454431
|
||||
193.083479611335 257.598942473238
|
||||
193.629871754108 258.042159631555
|
||||
193.825622944294 258.824292733972
|
||||
193.863871960102 259.194588973825
|
||||
193.629871754108 259.53216512472
|
||||
193.128486303745 259.272023275202
|
||||
192.764254002033 258.849040582483
|
||||
192.140873341022 257.868163659876
|
||||
191.858859716116 257.236263170546
|
||||
191.742701200901 256.582460477655
|
||||
191.693746952472 255.289538934534
|
||||
191.603849945722 254.690615310972
|
||||
191.36560550159 254.150179937189
|
||||
190.900462983309 253.688330426519
|
||||
190.129871754108 253.325164392298
|
||||
189.534089950977 252.986663177317
|
||||
188.770122913776 252.70666272909
|
||||
188.009531883655 252.661412074869
|
||||
187.684115259109 252.781895741527
|
||||
187.423878101764 253.027160241907
|
||||
187.985561518131 254.643897130793
|
||||
188.754621891437 256.186290338343
|
||||
189.416808752475 257.775369718378
|
||||
189.609621344267 258.625238552397
|
||||
189.657871632038 259.53216512472
|
||||
189.931126026569 260.133918359583
|
||||
189.905872730671 260.773162439173
|
||||
189.606054308025 261.033577825581
|
||||
189.354146419225 261.173382207458
|
||||
188.977861074863 261.144027068918
|
||||
188.744614360986 260.790835246151
|
||||
188.622003940998 260.219544961756
|
||||
188.579082636295 258.845621898477
|
||||
188.593967078386 258.254465564793
|
||||
188.589878467975 257.868163659876
|
||||
187.544744877277 255.97228772909
|
||||
186.405872730671 254.095168664759
|
||||
186.042839257179 254.30370391876
|
||||
185.610218910633 254.358325078791
|
||||
184.677124409137 254.265418603723
|
||||
184.247103659569 254.247687712019
|
||||
183.888402847706 254.335636213129
|
||||
183.636248676239 254.59416247875
|
||||
183.525867847858 255.088164880579
|
||||
184.153951494156 255.721615537708
|
||||
184.585101990162 256.422261073893
|
||||
184.845792023597 257.178171917503
|
||||
184.962494282184 257.977418496912
|
||||
184.869826225696 259.658200576609
|
||||
184.518879322468 261.369170739954
|
||||
184.764768986164 261.777758434122
|
||||
185.126999287067 262.107411935633
|
||||
185.377666859089 262.465192153757
|
||||
185.389944819866 262.688086315697
|
||||
185.288868336139 262.958159997766
|
||||
184.52162399715 263.252666070764
|
||||
184.118590502201 263.219450071161
|
||||
183.773868946491 263.007171228235
|
||||
183.363065598665 262.359424903696
|
||||
183.242933420597 261.716964319055
|
||||
183.510370640217 260.431541040247
|
||||
183.847556738315 259.118182733362
|
||||
183.814610658346 258.440803363626
|
||||
183.525867847858 257.744170739954
|
||||
182.96124496883 256.884542062586
|
||||
182.284870533405 256.081161096399
|
||||
181.335290102421 256.105054214304
|
||||
180.388243107258 255.994042947596
|
||||
179.501761106907 256.032093837564
|
||||
179.09936684197 256.195757135456
|
||||
178.733875660358 256.503173425501
|
||||
179.21279707378 257.15484563977
|
||||
179.524374393879 257.853686645334
|
||||
179.68520155376 258.586301669186
|
||||
179.71187248653 259.339295938318
|
||||
179.429121403156 260.852843120401
|
||||
178.8088726086 262.287170007532
|
||||
178.525298057256 262.62677670986
|
||||
178.560590414463 262.969278409784
|
||||
179.094370274006 263.628043725794
|
||||
179.346154986082 263.926845803564
|
||||
179.423401026188 264.193619802301
|
||||
179.202756999193 264.419634952848
|
||||
178.560871509968 264.596160486048
|
||||
178.035511760174 264.563493802851
|
||||
177.561246303974 264.37004049093
|
||||
177.17079308456 264.041398122614
|
||||
176.896870045124 263.603164270227
|
||||
176.941793112217 261.976012304132
|
||||
176.791246799885 260.416171624964
|
||||
176.631513742862 258.87957961828
|
||||
176.648876575885 257.322173669641
|
||||
175.749484686313 257.454337671106
|
||||
174.74049988216 257.523788049524
|
||||
173.698702005802 257.597930505579
|
||||
172.700870899616 257.744170739954
|
||||
173.172788111625 258.562743052547
|
||||
173.304826168476 259.424123599832
|
||||
173.211043683944 260.310558482712
|
||||
173.005499271808 261.204293802088
|
||||
172.802251545845 262.087575658863
|
||||
172.715359119831 262.94265015394
|
||||
172.858880607544 263.751763388222
|
||||
173.34687462276 264.49716146261
|
||||
173.357450990139 264.881884172266
|
||||
173.265746502338 265.192168786829
|
||||
173.053105143963 265.390701844995
|
||||
172.700870899616 265.440169885462
|
||||
172.176987407861 265.247643366163
|
||||
171.842232374607 264.914902761286
|
||||
171.65295356339 264.473951831167
|
||||
171.565498737751 263.956794336145
|
||||
171.521452097355 262.821874692743
|
||||
171.360874561725 261.766173913782
|
||||
171.15526419705 261.243981525009
|
||||
171.061685232578 260.694203689402
|
||||
170.997621921955 259.578172281092
|
||||
170.920637784658 259.045059010094
|
||||
170.742685465275 258.55064089567
|
||||
170.410515068231 258.111488088673
|
||||
169.870876697956 257.744170739954
|
||||
169.146780995784 257.629702403849
|
||||
168.452872662006 257.741170480555
|
||||
167.828714637218 258.034138992136
|
||||
167.313869862018 258.464171960657
|
||||
167.652372745929 259.900922372644
|
||||
167.708465723453 260.695046737497
|
||||
167.561870960651 261.468169763391
|
||||
165.898876575885 264.596160486048
|
||||
166.333123592792 265.586164071863
|
||||
166.526905087887 266.066257789438
|
||||
166.543873218952 266.558166101282
|
||||
166.284463701902 266.821791156834
|
||||
165.98921790546 266.907291248148
|
||||
165.358623890339 266.68566663534
|
||||
164.786904005466 266.176792457407
|
||||
164.408871082721 265.664168908899
|
||||
164.336720092354 265.278974070852
|
||||
164.39434197372 264.965919568842
|
||||
164.756873516498 264.472419336145
|
||||
165.212404040752 264.016043737238
|
||||
165.386274648963 263.749395027464
|
||||
165.476871876178 263.429168298548
|
||||
164.871872333942 261.384542062586
|
||||
164.691340832172 260.270026042765
|
||||
164.731869129596 259.060165002649
|
||||
163.022122768818 258.476790979212
|
||||
162.110060243068 258.382776334589
|
||||
161.181873707233 258.563170984095
|
||||
160.829952417074 258.927526190584
|
||||
160.610124735294 259.312201097315
|
||||
160.443375019489 260.140166833704
|
||||
160.434874205051 261.042381837671
|
||||
160.337871937214 262.014159753626
|
||||
158.872875599323 265.093169763391
|
||||
159.290068848191 265.03528051049
|
||||
159.603247193752 265.196884467905
|
||||
159.808801187335 265.519505008762
|
||||
159.903121380268 265.944665506189
|
||||
159.88259832388 266.413889333313
|
||||
159.7436225695 266.86869986326
|
||||
159.482584668456 267.250620469158
|
||||
159.095875172077 267.501174524134
|
||||
158.660744659735 267.307568020826
|
||||
158.317081911622 267.05679465801
|
||||
157.865030793606 266.408766820734
|
||||
157.661463989077 265.607129946058
|
||||
157.628123669086 264.701922967737
|
||||
157.759091166912 262.780954435175
|
||||
157.766883326827 261.865270748442
|
||||
157.631870655475 261.046172693079
|
||||
158.025495914875 259.593917444055
|
||||
158.312074570118 258.909507825678
|
||||
158.698871998249 258.290160730188
|
||||
158.000340132175 258.064226463144
|
||||
157.206371693073 258.101167276209
|
||||
155.545872120319 258.563170984095
|
||||
155.345503358303 258.863169058865
|
||||
155.0881694836 259.053105190103
|
||||
154.453747181354 259.202916696375
|
||||
153.744886784015 259.212855651682
|
||||
153.063869862018 259.283172204798
|
||||
152.859058080373 260.261898621624
|
||||
152.524496225773 261.182746723001
|
||||
151.691872028766 262.935792520349
|
||||
151.017496733127 264.71227867872
|
||||
150.880746005235 265.662427231377
|
||||
150.952869800983 266.682174279993
|
||||
150.930521501361 267.001462861603
|
||||
150.794137744365 267.248435333078
|
||||
150.294248012958 267.503541543787
|
||||
149.683168916164 267.403712108438
|
||||
149.407798452435 267.207015022343
|
||||
149.190868763385 266.905166223352
|
||||
149.185464171825 266.52893002302
|
||||
149.280372051655 266.203790262049
|
||||
149.537868885456 265.614165857141
|
||||
149.565997509418 262.386787011927
|
||||
149.799857406078 260.880302980249
|
||||
150.054301036654 260.182368471926
|
||||
150.431873707233 259.53216512472
|
||||
150.003790183125 259.241331919735
|
||||
149.497764615474 259.049732044046
|
||||
148.340247539936 258.914170816248
|
||||
147.1360428614 259.025358512705
|
||||
146.061870960651 259.283172204798
|
||||
145.276723532139 259.940378203695
|
||||
144.751309780536 260.700277402704
|
||||
144.410301832615 261.532904520338
|
||||
144.178371815143 262.40829427511
|
||||
143.740434078632 264.167500570124
|
||||
143.383770613132 264.991386547392
|
||||
142.834873585163 265.738174035852
|
||||
143.059286611287 266.207230668222
|
||||
143.181931195913 266.599809452598
|
||||
143.175340799747 267.169965102976
|
||||
142.921953914819 267.477504238193
|
||||
|
|
@ -0,0 +1,642 @@
|
|||
POLYGON
|
||||
134.736468231438 354.909490555232
|
||||
134.616513168572 354.396959811156
|
||||
134.337839996575 353.944991558497
|
||||
133.909729873894 353.726273208564
|
||||
133.642536318062 353.758347563153
|
||||
133.341463958977 353.913492172664
|
||||
132.697050368546 354.325671970551
|
||||
132.004227554558 354.521992414897
|
||||
130.522337829827 354.523742645686
|
||||
128.99376193261 354.432117670482
|
||||
128.242581403015 354.511719107335
|
||||
127.516467010735 354.760492294734
|
||||
125.549338257073 354.940866917079
|
||||
124.603133117913 354.809288650458
|
||||
124.155654942749 354.600325546866
|
||||
123.731463348625 354.262491196101
|
||||
124.425782943277 353.153720496861
|
||||
125.248209064959 352.227169058924
|
||||
126.184441896288 351.46897799213
|
||||
127.220181619881 350.865288406318
|
||||
128.341128418354 350.402241411326
|
||||
129.532982474325 350.065978116994
|
||||
130.78144397041 349.842639633162
|
||||
132.072213089226 349.718367069667
|
||||
134.723474925516 349.711584143048
|
||||
137.37236944413 349.93475821585
|
||||
139.904498106001 350.277018166786
|
||||
142.205462372063 350.627492874568
|
||||
142.787519401072 350.658617444044
|
||||
143.174740946053 350.484992056792
|
||||
143.400947338103 350.153866730338
|
||||
143.499958908318 349.712491482203
|
||||
143.451678907631 348.687991290992
|
||||
143.300463592766 347.789491623347
|
||||
142.949247067927 346.910989165013
|
||||
142.441680109261 346.130537718242
|
||||
141.812754636763 345.429469287103
|
||||
141.097462570427 344.789115875667
|
||||
139.54774633622 343.615882128184
|
||||
138.072466766594 342.461492508357
|
||||
135.705545818566 343.662773161834
|
||||
133.329340851067 344.975991695826
|
||||
132.111536478756 345.476237810855
|
||||
130.859946644066 345.76646056742
|
||||
129.564083194493 345.767324022656
|
||||
128.213457977532 345.399492233699
|
||||
127.570575242995 345.502064436381
|
||||
126.917133009194 345.753382652705
|
||||
125.611336624382 346.363866775935
|
||||
124.975365763663 346.55383750767
|
||||
124.361601984261 346.554163902705
|
||||
123.778236931322 346.280248373454
|
||||
123.233462249993 345.647493332332
|
||||
122.561512565373 345.583762243097
|
||||
121.890067493675 345.678773492282
|
||||
120.551081573723 346.046241730159
|
||||
119.884735917805 346.169308080976
|
||||
119.221285259484 346.152335494464
|
||||
118.561327194927 345.920628651684
|
||||
117.905459320305 345.399492233699
|
||||
115.913454925774 345.996492355769
|
||||
115.79042542739 345.440820270856
|
||||
115.517208149789 344.893915399616
|
||||
114.647710358856 343.824069350665
|
||||
112.508962547539 341.763866394465
|
||||
111.74971293485 340.764157697266
|
||||
111.559181790931 340.269855839839
|
||||
111.537213122605 339.778476327365
|
||||
111.715681955351 339.289434672972
|
||||
112.126463314651 338.802146389788
|
||||
112.801432225986 338.31602699094
|
||||
113.772463714836 337.830491989558
|
||||
115.940058147667 337.991304367488
|
||||
118.079714691399 337.886241882747
|
||||
120.144744312523 337.417054146235
|
||||
121.134683704136 337.015210061973
|
||||
122.088457977532 336.485490768855
|
||||
123.356441503523 336.61404316098
|
||||
124.521194135903 336.505724757617
|
||||
125.600798076151 336.203695609873
|
||||
126.613335525749 335.751115768855
|
||||
128.509539758919 334.566944211429
|
||||
130.354464447258 333.298490494197
|
||||
130.62741676545 332.495709865992
|
||||
130.746338760613 331.5809917149
|
||||
130.669323599098 330.666273563807
|
||||
130.354464447258 329.863492935603
|
||||
129.567917978523 329.425930112307
|
||||
128.69258967614 329.203242271846
|
||||
127.826448118447 328.924680083697
|
||||
127.427437549589 328.679836943453
|
||||
127.067461883782 328.319494217341
|
||||
127.516467010735 326.32748982281
|
||||
126.60335675454 326.248816579287
|
||||
125.704588806389 326.03486344189
|
||||
124.890009319542 325.606223433917
|
||||
124.229464447258 324.883489578669
|
||||
124.280025160073 324.522789209788
|
||||
124.419261848686 324.220506637996
|
||||
124.889090454338 323.763116806453
|
||||
126.071459686516 323.24049183697
|
||||
128.045588171242 322.72757002682
|
||||
130.061715042351 322.200866669124
|
||||
131.005254274367 321.811204045718
|
||||
131.862964784859 321.272724598353
|
||||
132.602737134455 320.536971181338
|
||||
133.192461883782 319.555486648982
|
||||
133.097791349648 318.915316790049
|
||||
132.918839370964 318.354364365046
|
||||
132.590447580574 317.895973890727
|
||||
132.047457611321 317.563489883845
|
||||
131.321379011629 317.762583940928
|
||||
130.693444406746 318.138490646785
|
||||
129.61983576989 319.212991684382
|
||||
128.602288877724 320.371492355769
|
||||
128.044431453703 320.852398603862
|
||||
127.416460907219 321.198492020076
|
||||
126.08184299445 321.365844979589
|
||||
124.740147983788 321.398444026416
|
||||
122.100962555168 321.37911507458
|
||||
120.836190080403 321.487054422205
|
||||
119.629776394127 321.779974549716
|
||||
118.498080467938 322.337809130257
|
||||
117.45746127343 323.24049183697
|
||||
116.706987016035 323.172709356701
|
||||
116.051539948343 322.94990545482
|
||||
115.476459931715 322.599144581412
|
||||
114.967086827515 322.147491186564
|
||||
114.086820801852 321.049764632886
|
||||
113.293460762261 319.873241394465
|
||||
112.469725599645 318.834437071984
|
||||
112.009817000611 318.434340629434
|
||||
111.49833420491 318.149867266124
|
||||
110.920617073907 318.008081432139
|
||||
110.262005468963 318.036047577565
|
||||
109.507839251442 318.260830152487
|
||||
108.643458282707 318.70949360699
|
||||
107.756882107018 319.34239837498
|
||||
107.075335418938 320.078241318171
|
||||
106.864036416767 320.499354481404
|
||||
106.767100727318 320.963710039561
|
||||
106.805563664196 321.477143943017
|
||||
107.000460541008 322.045492142146
|
||||
107.344176164029 322.500684171622
|
||||
107.834867989777 322.941849678462
|
||||
108.930461799858 323.838115662043
|
||||
109.372004559396 324.321223407691
|
||||
109.633805072067 324.846319168513
|
||||
109.634183725475 325.427406578963
|
||||
109.291460907219 326.078489273494
|
||||
108.689460998533 326.651365786498
|
||||
108.00458637452 327.160692184871
|
||||
106.614962494133 328.126365631526
|
||||
106.024587994574 328.651548176711
|
||||
105.580088293312 329.250851601069
|
||||
105.338650768755 329.958693653052
|
||||
105.357462799309 330.809492081111
|
||||
106.100542104004 331.533521681731
|
||||
106.670839226006 332.383739918178
|
||||
106.820947921036 333.28083386988
|
||||
106.6611171571 333.722173951273
|
||||
106.303461944817 334.145490616267
|
||||
105.779321586846 334.778944283431
|
||||
105.133587753533 335.178865879481
|
||||
103.664462005852 335.689489334529
|
||||
103.405463135002 335.158490150874
|
||||
103.272463714836 334.580990761226
|
||||
103.216463958977 333.547491043513
|
||||
102.405018603562 332.811808637982
|
||||
101.738275921105 332.031161457007
|
||||
100.689461624382 330.37936350674
|
||||
99.7711471674425 328.680878668731
|
||||
98.6844586489184 327.024488419002
|
||||
98.9340847936852 326.306736111348
|
||||
99.3925855514986 325.754709452098
|
||||
100.539461052178 324.895740478938
|
||||
101.029460867999 324.462751865094
|
||||
101.33158544278 323.943396299785
|
||||
101.346647312997 323.274650633042
|
||||
101.215533651544 322.864561777269
|
||||
100.975459015129 322.3934917149
|
||||
100.025632446764 322.368326157039
|
||||
99.0804115889055 322.620239227717
|
||||
97.2038334963305 323.458238571589
|
||||
96.2724995074255 323.79579350323
|
||||
95.3458177206499 323.913364380305
|
||||
94.4237997589094 323.686685532039
|
||||
93.5064572451098 322.991491287654
|
||||
93.6115043518526 322.355770080989
|
||||
93.7865828630907 321.678237884944
|
||||
93.8215985653383 321.010081261104
|
||||
93.5064572451098 320.402486771052
|
||||
92.7935083267672 319.936223119204
|
||||
92.0620879290087 319.362614601558
|
||||
91.5176024792177 318.686442702716
|
||||
91.3796498683674 318.311389699285
|
||||
91.3654584047777 317.912488907283
|
||||
92.1932086107714 317.370864838069
|
||||
92.9084576723559 316.717489212459
|
||||
92.5112406370623 315.185365289157
|
||||
92.0437096712572 313.611239403193
|
||||
91.913478976248 312.824480756824
|
||||
91.921552812813 312.046487658923
|
||||
92.1198921856863 311.283682122534
|
||||
92.560458099602 310.542486160701
|
||||
93.0658665058596 310.878865211909
|
||||
93.6929606554491 310.990991562312
|
||||
94.3388045189364 310.878865211909
|
||||
94.9004620668871 310.542486160701
|
||||
95.3024705705626 310.114232271617
|
||||
95.5860253927691 309.655004948085
|
||||
95.865462219475 308.669364899104
|
||||
95.8741490004046 307.637035816615
|
||||
95.7474621889574 306.609487503474
|
||||
95.5843506754769 305.749551547398
|
||||
95.311168065427 304.973391607111
|
||||
94.4984917995913 303.624534457629
|
||||
93.4372378793938 302.467185422485
|
||||
92.2552107927782 301.405613869136
|
||||
91.0802150276882 300.344089165037
|
||||
90.0400550720675 299.186880677646
|
||||
89.6104774252904 298.542479192545
|
||||
89.2625354138596 297.838257774418
|
||||
89.0122045987679 297.062250094195
|
||||
88.8754605410082 296.20248982281
|
||||
91.2154645082934 294.309492081111
|
||||
91.7065436152203 294.535263240045
|
||||
92.1456036922915 294.901038378184
|
||||
92.9400881884081 295.753866165584
|
||||
93.3317233232243 296.091551601594
|
||||
93.7437608597262 296.270506590312
|
||||
94.1943061557991 296.216047525113
|
||||
94.7014645693285 295.853490799373
|
||||
95.7035845873339 292.78486344189
|
||||
95.8563523200733 291.998809769457
|
||||
95.8848197815401 291.19697102875
|
||||
95.7463892904503 290.375234052246
|
||||
95.3984631655199 289.529485672419
|
||||
96.1518851873858 289.32328328461
|
||||
96.7930878756029 288.813612907832
|
||||
97.8884610292895 287.537488907283
|
||||
98.3364590761645 284.25148579449
|
||||
99.1744443533404 283.872392505114
|
||||
100.073084747551 283.535487144893
|
||||
100.850412046669 283.095832436984
|
||||
101.136718219279 282.792181178635
|
||||
101.324458038567 282.408491104548
|
||||
100.610771333931 282.004879802173
|
||||
99.7992104647143 281.792612999385
|
||||
98.9782740232928 281.813784211581
|
||||
98.2364606020434 282.110486954158
|
||||
96.9580056277497 283.1566387412
|
||||
95.9631326553805 284.337004869883
|
||||
95.199330022691 285.627081572717
|
||||
94.6140860674364 287.00236508221
|
||||
93.7692275402529 289.910537451213
|
||||
93.0084637758715 292.86549183697
|
||||
92.6221810785515 292.528913810556
|
||||
92.0941489098055 292.366804450457
|
||||
90.8112105486376 292.274241417354
|
||||
90.1554915515167 292.197912588423
|
||||
89.556397473572 292.004302113955
|
||||
89.0635219124539 291.620472415989
|
||||
88.7264584658129 290.97348591656
|
||||
88.7943413165791 290.256545856302
|
||||
88.9520836231692 289.503956645434
|
||||
89.2617091295702 287.992238014644
|
||||
89.2758735922558 287.283312216108
|
||||
89.1044600365145 286.639144509738
|
||||
88.6786090937836 286.084836706226
|
||||
87.9294613955004 285.645490616267
|
||||
87.2951375303252 285.480674653953
|
||||
86.7314306852801 285.215909927791
|
||||
86.2447393593771 284.861590891784
|
||||
85.8414620516283 284.428111999934
|
||||
85.5279972610457 283.925867706244
|
||||
85.3107434866411 283.365252464717
|
||||
85.1904629824145 282.110486954158
|
||||
86.9207123873217 281.512738197749
|
||||
87.6691180822832 281.073801368182
|
||||
88.2774609682543 280.466489761775
|
||||
88.7490849850161 280.311129420703
|
||||
89.2859610674364 280.305113762324
|
||||
89.8040874359591 280.243034928744
|
||||
90.2194623110277 279.919485062068
|
||||
90.1425675955994 279.33384042949
|
||||
89.9309304115755 278.773941248362
|
||||
89.2177104113085 277.740613907283
|
||||
88.3083658573611 276.837972372477
|
||||
87.4314602968676 276.084485977595
|
||||
87.7721794006808 275.891661256259
|
||||
87.9921483156664 275.624128788417
|
||||
88.1842106935961 274.93961331219
|
||||
88.2363976595385 274.180284946864
|
||||
88.3774594423754 273.495489090388
|
||||
90.1637114641649 271.460238426631
|
||||
92.0624646303637 269.462484329646
|
||||
92.2078211662752 269.898314684337
|
||||
92.1805857775194 270.371362656062
|
||||
92.1812897083742 270.862972944682
|
||||
92.4104642031176 271.354490250056
|
||||
93.3327575383169 271.290117308205
|
||||
94.1120707151873 270.960818379825
|
||||
94.7921732721312 270.442448928659
|
||||
95.4168347475512 269.810864418452
|
||||
96.6749126074297 268.511472075885
|
||||
97.3958680686934 267.995375171011
|
||||
98.2364606020434 267.669485062068
|
||||
100.363017460464 267.228535413449
|
||||
102.428226744889 266.624753683513
|
||||
106.484336769341 265.211114853328
|
||||
108.530104598163 264.5424681899
|
||||
110.624259030579 263.993410318797
|
||||
112.794233610986 263.634546458428
|
||||
115.067461883782 263.536481827205
|
||||
115.390959655998 261.737865417903
|
||||
115.753429329155 260.938723772471
|
||||
116.054323589562 260.611157655423
|
||||
116.461459076164 260.349485367244
|
||||
117.009563719986 261.097417711919
|
||||
117.166588699578 261.8792526421
|
||||
117.055112397431 262.686798512643
|
||||
116.797713196038 263.511863678401
|
||||
116.335459625481 265.181785314982
|
||||
116.375762021301 266.010258495515
|
||||
116.760455047844 266.823484390681
|
||||
117.880459701775 267.513988464778
|
||||
118.314649259804 267.978299826091
|
||||
118.414485102652 268.270900070374
|
||||
118.403460418938 268.615484207576
|
||||
118.456658816097 269.211302578156
|
||||
118.27760258889 269.824018686717
|
||||
117.656836426018 270.999738663142
|
||||
117.432181572674 271.512539803689
|
||||
117.409382259606 271.94183322758
|
||||
117.696966027973 272.262517571156
|
||||
117.991066424309 272.374287161683
|
||||
118.403460418938 272.449491470759
|
||||
119.355099087713 272.088581278627
|
||||
120.330057775734 272.072472899859
|
||||
122.275216018913 272.530863731807
|
||||
123.208055978773 272.733464017218
|
||||
124.089496767281 272.737068265384
|
||||
124.900858586786 272.405727013653
|
||||
125.274422446398 272.071967618247
|
||||
125.623461639641 271.603490799373
|
||||
125.765258228539 270.812893837398
|
||||
125.71083728051 270.022485702937
|
||||
125.275469696282 268.516485184138
|
||||
124.662077581642 268.27523538441
|
||||
124.104840194939 267.931236236995
|
||||
123.622415697335 267.493861883586
|
||||
123.233462249993 266.972486465877
|
||||
123.200286125897 265.863791316455
|
||||
123.321692859886 264.713049858516
|
||||
123.78783313012 262.341489761775
|
||||
124.151039516686 259.969929665034
|
||||
124.143778896092 258.819188207095
|
||||
123.930468475579 257.710493057673
|
||||
124.506095415114 256.65383416385
|
||||
125.182608282326 255.633912771647
|
||||
126.588589584587 253.608612030452
|
||||
127.193206912039 252.555397450631
|
||||
127.649007951973 251.443249910777
|
||||
127.893567150591 250.248251795476
|
||||
127.864458954094 248.946485489314
|
||||
128.696370845793 247.681423216765
|
||||
129.319993650673 246.285661190455
|
||||
130.360215103386 243.382116287654
|
||||
130.985735302923 242.014372616713
|
||||
131.820809519051 240.796007603114
|
||||
132.34957337579 240.264723218685
|
||||
132.969898527621 239.797040849631
|
||||
133.694842571525 239.401712946301
|
||||
134.537463104485 239.087491959041
|
||||
135.359450733422 238.379456728404
|
||||
135.924841797112 237.456737488215
|
||||
136.294292843102 236.440643042033
|
||||
136.528460418938 235.452482193416
|
||||
136.243180668114 235.042577713435
|
||||
136.18646517968 234.525236099666
|
||||
136.180468475579 233.410490005916
|
||||
135.26453339508 233.214220575695
|
||||
134.434079712389 233.174596219962
|
||||
133.680064918606 233.275573886638
|
||||
132.99344650483 233.501110523646
|
||||
132.365181962161 233.835163078909
|
||||
131.786228781698 234.26168850035
|
||||
130.740086471794 235.327985733455
|
||||
128.841667806862 237.864360302394
|
||||
127.844711309431 239.077748804992
|
||||
126.719469940422 240.083478897517
|
||||
126.531453346966 240.714140623515
|
||||
126.475918209313 241.449826210444
|
||||
126.451838409661 243.021486252253
|
||||
126.328066801785 243.750069349711
|
||||
126.026322757958 244.368893593257
|
||||
125.468992805241 244.824263304179
|
||||
125.070228902755 244.973872810309
|
||||
124.578463470696 245.062482803767
|
||||
124.180497562645 245.926267832225
|
||||
123.824717437981 246.81798931927
|
||||
123.31031075692 247.541708677714
|
||||
122.930868601559 247.779336750214
|
||||
122.43646517968 247.901487320369
|
||||
121.98335186219 248.052297085231
|
||||
121.459835922478 248.063234299128
|
||||
121.001382505654 248.167549580043
|
||||
120.838887101172 248.32761481375
|
||||
120.743456756829 248.598493545955
|
||||
120.535072242974 249.749992102092
|
||||
120.15859118676 250.901489227717
|
||||
119.883964931725 251.413019358819
|
||||
119.539295112847 251.847487657969
|
||||
119.115241920708 252.179206967061
|
||||
118.602465545891 252.382490127986
|
||||
117.658194696663 252.250335186427
|
||||
116.797833359001 251.884740799373
|
||||
115.956037199257 251.444519489711
|
||||
115.067461883782 251.08848378033
|
||||
114.553394859789 251.777962922757
|
||||
114.317179834603 252.609250276988
|
||||
114.220711624382 254.442859619563
|
||||
114.131661361216 255.317986607259
|
||||
113.86286894059 256.080531805461
|
||||
113.299935823439 256.666897713845
|
||||
112.872416960208 256.874139215504
|
||||
112.328463470696 257.013486832087
|
||||
112.047541508584 256.553165059244
|
||||
111.747588222979 256.224925338929
|
||||
111.098462736366 255.895551413005
|
||||
110.396837121008 255.887083768552
|
||||
109.658461487053 256.061241119807
|
||||
108.134460603951 256.404305666392
|
||||
107.380335575102 256.296650290196
|
||||
106.652460968254 255.818494766658
|
||||
105.467931425331 256.950054377025
|
||||
104.124962723015 258.034740417903
|
||||
102.800742304085 259.194050520366
|
||||
101.672457611321 260.549482315486
|
||||
101.287194049118 260.341211408084
|
||||
100.942148601769 260.013936966365
|
||||
100.309712326287 259.217111557429
|
||||
99.6491493341906 258.588474243586
|
||||
99.2689454910738 258.471434920733
|
||||
98.8344601747973 258.557493179744
|
||||
98.6903377139402 259.153280336117
|
||||
98.4706643429978 259.643540024465
|
||||
97.8478367683871 260.36611768574
|
||||
97.0523212460263 260.842507540887
|
||||
96.1704615709765 261.189990967219
|
||||
95.2886015382988 261.525849342053
|
||||
94.4930849430544 261.967364042705
|
||||
93.8702555803044 262.631816446488
|
||||
93.6505810470713 263.084294717466
|
||||
93.5064572451098 263.63648793072
|
||||
92.4776162115319 264.388501181906
|
||||
91.3075993416292 264.919346183246
|
||||
88.8380850908739 265.721360176509
|
||||
87.6856112090332 266.194443538492
|
||||
86.6860084888918 266.85018739075
|
||||
86.266506236179 267.278106121054
|
||||
85.9127886799557 267.789548918312
|
||||
85.6340447889102 268.397135430654
|
||||
85.4394635317309 269.113485306209
|
||||
85.2064154056294 270.158124923413
|
||||
85.2738366482241 271.252346247142
|
||||
85.7569617388232 273.45186230511
|
||||
85.896102836488 274.488321184819
|
||||
85.78258780217 275.436690061992
|
||||
85.5878713057769 275.867085147356
|
||||
85.2781352606995 276.262551009362
|
||||
84.8360944950415 276.618785407101
|
||||
84.2444638369066 276.931486099666
|
||||
84.3983449099047 278.105893507307
|
||||
84.3456486818774 279.249362796252
|
||||
83.8959607241137 281.506487816279
|
||||
83.44627276635 283.828862756198
|
||||
83.3935765383227 285.053894445007
|
||||
83.5474576113207 286.342489212459
|
||||
83.6790998784287 286.819214164918
|
||||
83.9006479141695 287.251536577647
|
||||
84.4687117693407 288.048364609187
|
||||
84.962150132416 288.863754957622
|
||||
85.0904163030369 289.319280266469
|
||||
85.091463958977 289.828489273494
|
||||
84.2736814377291 290.3713310656
|
||||
83.3672122118456 290.699486702388
|
||||
82.451368844269 290.878392785495
|
||||
81.6054638979418 290.97348591656
|
||||
81.4909137116207 291.484100274449
|
||||
81.4730037955029 291.921193986838
|
||||
81.6655402538759 292.616831272548
|
||||
82.0599442330582 293.144421368545
|
||||
82.5330866930468 293.587987869685
|
||||
82.9618385938389 294.031554370826
|
||||
83.2230708954317 294.559144466823
|
||||
83.1936545578224 295.254781752532
|
||||
83.0314753243161 295.691875464921
|
||||
82.7504605410082 296.20248982281
|
||||
82.2821846512539 297.108771934812
|
||||
82.2253189442141 298.057066291278
|
||||
82.6945838091357 299.986363380855
|
||||
82.895097246526 300.920701935594
|
||||
82.8557865974886 301.803724378055
|
||||
82.6953195632828 302.218700779309
|
||||
82.413843294738 302.612098619049
|
||||
81.9910067209435 302.981001386126
|
||||
81.4064587709887 303.322492569392
|
||||
81.3823336718065 303.772132485812
|
||||
81.5869588015063 304.119116753047
|
||||
81.875583564995 304.428788989489
|
||||
82.1034573671801 304.766492813533
|
||||
81.6217738000138 305.776545405095
|
||||
81.2655513641817 306.879926889842
|
||||
81.0435321835263 308.043965279763
|
||||
80.9644583818896 309.235988586848
|
||||
81.0370720831139 310.423324823087
|
||||
81.2701154110415 311.573302000468
|
||||
81.6723304895146 312.653248130982
|
||||
82.2524594423754 313.630491226619
|
||||
82.8035173696859 313.91096124955
|
||||
83.1994366404993 314.210094853943
|
||||
83.6008357164843 314.85969457001
|
||||
83.6066096780283 315.569973900621
|
||||
83.3667115328295 316.331616371577
|
||||
82.7497109529955 317.971724837726
|
||||
82.6725145337565 318.83155788452
|
||||
82.9494580385668 319.705488174861
|
||||
83.6357809809429 320.650364011233
|
||||
84.4708500263674 321.271427124446
|
||||
85.4120674935562 321.664958804553
|
||||
86.4168357012255 321.927240341609
|
||||
88.4466336128695 322.443178146785
|
||||
89.3864679542763 322.889396995013
|
||||
90.2194623110277 323.589490860408
|
||||
91.3953618464453 324.716746836608
|
||||
92.3717266676409 325.922787874644
|
||||
93.187052732466 327.193024187987
|
||||
93.8798359987719 328.512865990107
|
||||
95.051757967232 331.243006914561
|
||||
96.1954602358324 333.996492355769
|
||||
95.9317112324221 334.526803761428
|
||||
95.5044612047655 334.954740971034
|
||||
94.5524624941332 335.689489334529
|
||||
93.0758246538622 334.968386918013
|
||||
91.5076169130785 334.46847555012
|
||||
88.2342099306566 333.803116768306
|
||||
86.5978697893603 333.473114758437
|
||||
85.0076779482348 333.035194605296
|
||||
83.4980639574511 332.407079010909
|
||||
82.1034573671801 331.506490677302
|
||||
81.2246101704819 332.075711697047
|
||||
80.2261145470125 332.391069143718
|
||||
78.0639590380175 332.645365684932
|
||||
76.9971896616204 332.776890963023
|
||||
76.0045528767092 333.039725035136
|
||||
75.1344939378483 333.530160993045
|
||||
74.435458099602 334.344491928523
|
||||
75.2668571790142 335.315232764637
|
||||
76.1526764688475 336.176464795773
|
||||
78.071819936989 337.589961021846
|
||||
80.16137701845 338.624097764199
|
||||
82.3898362276537 339.317992180293
|
||||
84.7256860790236 339.710761427586
|
||||
87.1374150869829 339.841522663539
|
||||
89.5935117659552 339.749393045609
|
||||
92.0624646303637 339.473489731257
|
||||
93.9671496508105 339.05889663071
|
||||
95.9464615938647 338.882241218989
|
||||
97.8882741091234 339.088460772937
|
||||
98.8100785968287 339.380441561048
|
||||
99.680460846184 339.822492569392
|
||||
101.149694955109 341.386757880156
|
||||
102.618835365532 343.114616840785
|
||||
103.41170065677 343.910079605585
|
||||
104.27453879094 344.590663581794
|
||||
105.230681857227 345.104443035727
|
||||
106.303461944817 345.399492233699
|
||||
106.713770190386 346.531288570432
|
||||
107.228679960726 347.543267987376
|
||||
107.838417844979 348.44512921263
|
||||
108.533210432289 349.246570974296
|
||||
109.3032843118 349.95729200047
|
||||
110.138866072653 350.586991019254
|
||||
111.967459594963 351.642117947047
|
||||
113.940803712366 352.48954158247
|
||||
115.980711138008 353.206851750319
|
||||
118.008994585036 353.87163827539
|
||||
119.947466766594 354.561490982478
|
||||
121.624440407513 355.409717604225
|
||||
123.420511638878 355.988366216128
|
||||
125.30065331435 356.317264869516
|
||||
127.22983828759 356.416241615718
|
||||
129.173039412258 356.305124506061
|
||||
131.095229542015 356.003741591876
|
||||
132.961381530522 355.53192092449
|
||||
POLYGON
|
||||
108.793459808586 338.178491562312
|
||||
108.761770149825 337.639546550517
|
||||
108.58868149495 337.261429339354
|
||||
108.302295437215 337.016718141442
|
||||
107.930713569878 336.877991169398
|
||||
107.044368779419 336.808802753394
|
||||
106.154459869621 336.834489792293
|
||||
106.073443925141 337.246115654414
|
||||
106.179084694145 337.69974133343
|
||||
106.434163844345 338.143991440242
|
||||
106.80146304345 338.52749058575
|
||||
107.909212982414 338.52099177212
|
||||
108.411899959801 338.464210301345
|
||||
POLYGON
|
||||
119.598467743157 332.850492447322
|
||||
119.900662278889 332.501130439048
|
||||
120.315978443382 332.184475689834
|
||||
121.229334747551 331.555865734523
|
||||
121.599054431675 331.197199411397
|
||||
121.825254833458 330.777818113273
|
||||
121.843775725125 330.274366281634
|
||||
121.590456878899 329.663488357966
|
||||
119.923148309944 328.726753681605
|
||||
118.18571177697 327.95811268658
|
||||
116.4576508162 327.170909374659
|
||||
114.81846896386 326.178487747615
|
||||
114.151621258019 326.174669325059
|
||||
113.554150497673 326.31612846226
|
||||
112.471712982414 326.831863373225
|
||||
111.379902755974 327.319660395091
|
||||
110.770716106652 327.426197170918
|
||||
110.087466156243 327.373487442439
|
||||
109.962305700539 328.554472475951
|
||||
110.056710159538 329.838114231532
|
||||
110.515239870308 331.084443241065
|
||||
110.92622680044 331.649875007277
|
||||
111.482455169914 332.153490036433
|
||||
112.429406380413 332.649089932149
|
||||
113.401539242027 332.906599968379
|
||||
114.395912980793 332.986711561387
|
||||
115.409586822746 332.950116127437
|
||||
117.48307172036 332.769569843715
|
||||
118.537001228092 332.74700182647
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 7.4 KiB |
|
|
@ -0,0 +1,216 @@
|
|||
// Copyright (c) 2008 GeometryFactory Sarl (France).
|
||||
// All rights reserved.
|
||||
//
|
||||
// This file is part of CGAL (www.cgal.org); you may redistribute it under
|
||||
// the terms of the Q Public License version 1.0.
|
||||
// See the file LICENSE.QPL distributed with CGAL.
|
||||
//
|
||||
// Licensees holding a valid commercial license may use this file in
|
||||
// accordance with the commercial license agreement provided with the software.
|
||||
//
|
||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// $URL$
|
||||
// $Id$
|
||||
//
|
||||
//
|
||||
// Author(s) : Andreas Fabri <Andreas.Fabri@geometryfactory.com>
|
||||
// Laurent Rineau <Laurent.Rineau@geometryfactory.com>
|
||||
|
||||
#ifndef CGAL_QT_POLYLINE_SIMPLIFICATION_2_GRAPHICS_ITEM_H
|
||||
#define CGAL_QT_POLYLINE_SIMPLIFICATION_2_GRAPHICS_ITEM_H
|
||||
|
||||
#include <CGAL/Qt/TriangulationGraphicsItem.h>
|
||||
#include <CGAL/Polyline_constrained_triangulation_2.h>
|
||||
#include <QPen>
|
||||
|
||||
namespace CGAL {
|
||||
|
||||
namespace Qt {
|
||||
|
||||
template <typename PCT>
|
||||
class PolylineSimplificationGraphicsItem : public TriangulationGraphicsItem<PCT >
|
||||
{
|
||||
typedef typename PCT::Geom_traits Geom_traits;
|
||||
typedef typename PCT::Constraint_id Constraint_id;
|
||||
typedef typename PCT::Constraint_iterator Constraint_iterator;
|
||||
typedef typename PCT::Vertices_in_constraint_iterator Vertices_in_constraint_iterator;
|
||||
//typedef typename PCT::Points_in_constraint_iterator Points_in_constraint_iterator;
|
||||
|
||||
Vertices_in_constraint_iterator
|
||||
decrement(Vertices_in_constraint_iterator it)
|
||||
{
|
||||
do{
|
||||
--it;
|
||||
} while(it->removed);
|
||||
return it;
|
||||
}
|
||||
|
||||
Vertices_in_constraint_iterator
|
||||
increment(Vertices_in_constraint_iterator it)
|
||||
{
|
||||
do{
|
||||
++it;
|
||||
} while(it->removed);
|
||||
return it;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public:
|
||||
|
||||
PolylineSimplificationGraphicsItem(PCT * pct)
|
||||
: TriangulationGraphicsItem<PCT>(pct), visible_constraints(true)
|
||||
{
|
||||
constraints_pen = this->edgesPen();
|
||||
constraints_pen.setColor(::Qt::red);
|
||||
|
||||
fixed_vertices_pen = this->verticesPen();
|
||||
fixed_vertices_pen.setColor(::Qt::blue);
|
||||
}
|
||||
|
||||
void operator()(typename PCT::Face_handle fh);
|
||||
|
||||
const QPen& constraintsPen() const
|
||||
{
|
||||
return constraints_pen;
|
||||
}
|
||||
|
||||
void setConstraintsPen(const QPen& pen)
|
||||
{
|
||||
constraints_pen = pen;
|
||||
}
|
||||
|
||||
const QPen& fixedVerticesPen() const
|
||||
{
|
||||
return fixed_vertices_pen;
|
||||
}
|
||||
|
||||
void setFixedVerticesPen(const QPen& pen)
|
||||
{
|
||||
fixed_vertices_pen = pen;
|
||||
}
|
||||
|
||||
bool visibleConstraints() const
|
||||
{
|
||||
return visible_constraints;
|
||||
}
|
||||
|
||||
void setVisibleConstraints(const bool b)
|
||||
{
|
||||
visible_constraints = b;
|
||||
this->update();
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
void drawAll(QPainter *painter);
|
||||
void paintVertices(QPainter *painter);
|
||||
virtual void paintVertex(typename PCT::Vertex_handle vh);
|
||||
|
||||
QPen constraints_pen;
|
||||
QPen fixed_vertices_pen;
|
||||
|
||||
private:
|
||||
bool visible_constraints;
|
||||
|
||||
};
|
||||
|
||||
template <typename PCT>
|
||||
void
|
||||
PolylineSimplificationGraphicsItem<PCT>::drawAll(QPainter *painter)
|
||||
{
|
||||
this->painterostream = PainterOstream<Geom_traits>(painter);
|
||||
|
||||
for(typename PCT::Finite_edges_iterator eit = this->t->finite_edges_begin();
|
||||
eit != this->t->finite_edges_end();
|
||||
++eit)
|
||||
{
|
||||
if(this->visibleConstraints() && this->t->is_constrained(*eit))
|
||||
{
|
||||
painter->setPen(constraintsPen());
|
||||
this->painterostream << this->t->segment(*eit);
|
||||
}
|
||||
else if( this->visibleEdges() )
|
||||
{
|
||||
painter->setPen(this->edgesPen());
|
||||
this->painterostream << this->t->segment(*eit);
|
||||
}
|
||||
}
|
||||
|
||||
this->paintVertices(painter);
|
||||
}
|
||||
|
||||
template <typename PCT>
|
||||
void
|
||||
PolylineSimplificationGraphicsItem<PCT>::operator()( typename PCT::Face_handle fh )
|
||||
{
|
||||
for (int i=0; i<3; i++) {
|
||||
if ( fh < fh->neighbor(i) || this->t->is_infinite(fh->neighbor(i)) ) {
|
||||
// if(this->visibleConstraints() && this->t->is_constrained(typename PCT::Edge(fh,i)) && (! this->t->is_infinite(fh->neighbor(i)))){
|
||||
if(this->visibleConstraints() && this->t->is_constrained(typename PCT::Edge(fh,i)) ){
|
||||
this->m_painter->setPen(constraintsPen());
|
||||
this->painterostream << this->t->segment(fh,i);
|
||||
} else if( this->visibleEdges() ){
|
||||
this->m_painter->setPen(this->edgesPen());
|
||||
this->painterostream << this->t->segment(fh,i);
|
||||
}
|
||||
}
|
||||
if(this->visibleVertices()) {
|
||||
paintVertex(fh->vertex(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template <typename PCT>
|
||||
void
|
||||
PolylineSimplificationGraphicsItem<PCT>::paintVertex( typename PCT::Vertex_handle vh )
|
||||
{
|
||||
Converter<Geom_traits> convert;
|
||||
|
||||
// if ( vh->is_fixed() || vh->is_shared() ) {
|
||||
// this->m_painter->setPen(this->fixedVerticesPen());
|
||||
// } else {
|
||||
this->m_painter->setPen(this->verticesPen());
|
||||
// }
|
||||
QMatrix matrix = this->m_painter->matrix();
|
||||
this->m_painter->resetMatrix();
|
||||
this->m_painter->drawPoint(matrix.map(convert(vh->point())));
|
||||
this->m_painter->setMatrix(matrix);
|
||||
}
|
||||
|
||||
|
||||
template <typename PCT>
|
||||
void
|
||||
PolylineSimplificationGraphicsItem<PCT>::paintVertices(QPainter *painter)
|
||||
{
|
||||
if(this->visibleVertices())
|
||||
{
|
||||
Converter<Geom_traits> convert;
|
||||
|
||||
QMatrix matrix = painter->matrix();
|
||||
painter->resetMatrix();
|
||||
for(Constraint_iterator cit = this->t->constraints_begin();
|
||||
cit != this->t->constraints_end();
|
||||
++cit){
|
||||
for(Vertices_in_constraint_iterator it = this->t->vertices_in_constraint_begin(*cit);
|
||||
it != this->t->vertices_in_constraint_end(*cit);
|
||||
it++){
|
||||
QPointF point = matrix.map(convert(it->point));
|
||||
if ( it->fixed )
|
||||
painter->setPen(this->fixedVerticesPen());
|
||||
else
|
||||
painter->setPen(this->verticesPen());
|
||||
|
||||
painter->drawPoint(point);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace Qt
|
||||
} // namespace CGAL
|
||||
|
||||
#endif // CGAL_QT_POLYLINE_SIMPLIFICATION_2_GRAPHICS_ITEM_H
|
||||
|
|
@ -0,0 +1,196 @@
|
|||
// Copyright (c) 2008 GeometryFactory Sarl (France).
|
||||
// All rights reserved.
|
||||
//
|
||||
// This file is part of CGAL (www.cgal.org); you may redistribute it under
|
||||
// the terms of the Q Public License version 1.0.
|
||||
// See the file LICENSE.QPL distributed with CGAL.
|
||||
//
|
||||
// Licensees holding a valid commercial license may use this file in
|
||||
// accordance with the commercial license agreement provided with the software.
|
||||
//
|
||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// $URL$
|
||||
// $Id$
|
||||
//
|
||||
//
|
||||
// Author(s) : Andreas Fabri <Andreas.Fabri@geometryfactory.com>
|
||||
// Laurent Rineau <Laurent.Rineau@geometryfactory.com>
|
||||
|
||||
#ifndef CGAL_QT_TRIANGULATION_ARRANGEMENT_GRAPHICS_ITEM_H
|
||||
#define CGAL_QT_TRIANGULATION_ARRANGEMENT_GRAPHICS_ITEM_H
|
||||
|
||||
#include <CGAL/Qt/TriangulationGraphicsItem.h>
|
||||
#include <QPen>
|
||||
|
||||
namespace CGAL {
|
||||
|
||||
namespace Qt {
|
||||
|
||||
template <typename T>
|
||||
class TriangulationArrangementGraphicsItem : public TriangulationGraphicsItem<T>
|
||||
{
|
||||
typedef typename T::Geom_traits Geom_traits;
|
||||
public:
|
||||
TriangulationArrangementGraphicsItem(T * t_)
|
||||
: TriangulationGraphicsItem<T>(t_), visible_constraints(true)
|
||||
{
|
||||
constraints_pen = this->edgesPen();
|
||||
constraints_pen.setColor(::Qt::red);
|
||||
|
||||
fixed_vertices_pen = this->verticesPen();
|
||||
fixed_vertices_pen.setColor(::Qt::blue);
|
||||
}
|
||||
|
||||
void operator()(typename T::Face_handle fh);
|
||||
|
||||
const QPen& constraintsPen() const
|
||||
{
|
||||
return constraints_pen;
|
||||
}
|
||||
|
||||
void setConstraintsPen(const QPen& pen)
|
||||
{
|
||||
constraints_pen = pen;
|
||||
}
|
||||
|
||||
const QPen& fixedVerticesPen() const
|
||||
{
|
||||
return fixed_vertices_pen;
|
||||
}
|
||||
|
||||
void setFixedVerticesPen(const QPen& pen)
|
||||
{
|
||||
fixed_vertices_pen = pen;
|
||||
}
|
||||
|
||||
bool visibleConstraints() const
|
||||
{
|
||||
return visible_constraints;
|
||||
}
|
||||
|
||||
void setVisibleConstraints(const bool b)
|
||||
{
|
||||
visible_constraints = b;
|
||||
this->update();
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
void drawAll(QPainter *painter);
|
||||
void paintVertices(QPainter *painter);
|
||||
virtual void paintVertex(typename T::Vertex_handle vh);
|
||||
|
||||
QPen constraints_pen;
|
||||
QPen fixed_vertices_pen;
|
||||
|
||||
private:
|
||||
bool visible_constraints;
|
||||
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
void
|
||||
TriangulationArrangementGraphicsItem<T>::drawAll(QPainter *painter)
|
||||
{
|
||||
this->painterostream = PainterOstream<Geom_traits>(painter);
|
||||
|
||||
for(typename T::Finite_edges_iterator eit = this->t->finite_edges_begin();
|
||||
eit != this->t->finite_edges_end();
|
||||
++eit)
|
||||
{
|
||||
|
||||
if ( !eit->first->vertex(this->t->ccw(eit->second))->is_corner()
|
||||
|| !eit->first->vertex(this->t->cw (eit->second))->is_corner()
|
||||
)
|
||||
{
|
||||
if(this->visibleConstraints() && this->t->is_constrained(*eit))
|
||||
{
|
||||
painter->setPen(constraintsPen());
|
||||
this->painterostream << this->t->segment(*eit);
|
||||
}
|
||||
else if( this->visibleEdges() )
|
||||
{
|
||||
painter->setPen(this->edgesPen());
|
||||
this->painterostream << this->t->segment(*eit);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this->paintVertices(painter);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void
|
||||
TriangulationArrangementGraphicsItem<T>::operator()(typename T::Face_handle fh)
|
||||
{
|
||||
for (int i=0; i<3; i++) {
|
||||
if ( fh < fh->neighbor(i) || this->t->is_infinite(fh->neighbor(i)) ) {
|
||||
if(this->visibleConstraints() && this->t->is_constrained(typename T::Edge(fh,i)) && (! this->t->is_infinite(fh->neighbor(i)))){
|
||||
this->m_painter->setPen(constraintsPen());
|
||||
this->painterostream << this->t->segment(fh,i);
|
||||
} else if( this->visibleEdges() ){
|
||||
this->m_painter->setPen(this->edgesPen());
|
||||
this->painterostream << this->t->segment(fh,i);
|
||||
}
|
||||
}
|
||||
if(this->visibleVertices()) {
|
||||
paintVertex(fh->vertex(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
void
|
||||
TriangulationArrangementGraphicsItem<T>::paintVertex(typename T::Vertex_handle vh)
|
||||
{
|
||||
if ( ! vh->is_corner() ) {
|
||||
Converter<Geom_traits> convert;
|
||||
|
||||
if ( vh->is_fixed() ) {
|
||||
this->m_painter->setPen(this->fixedVerticesPen());
|
||||
} else {
|
||||
this->m_painter->setPen(this->verticesPen());
|
||||
}
|
||||
QMatrix matrix = this->m_painter->matrix();
|
||||
this->m_painter->resetMatrix();
|
||||
this->m_painter->drawPoint(matrix.map(convert(vh->point())));
|
||||
this->m_painter->setMatrix(matrix);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
void
|
||||
TriangulationArrangementGraphicsItem<T>::paintVertices(QPainter *painter)
|
||||
{
|
||||
if(this->visibleVertices())
|
||||
{
|
||||
Converter<Geom_traits> convert;
|
||||
|
||||
QMatrix matrix = painter->matrix();
|
||||
painter->resetMatrix();
|
||||
for(typename T::Finite_vertices_iterator it = this->t->finite_vertices_begin();
|
||||
it != this->t->finite_vertices_end();
|
||||
it++)
|
||||
{
|
||||
if ( ! it->is_corner() )
|
||||
{
|
||||
QPointF point = matrix.map(convert(it->point()));
|
||||
|
||||
if ( it->is_fixed() )
|
||||
painter->setPen(this->fixedVerticesPen());
|
||||
else painter->setPen(this->verticesPen());
|
||||
|
||||
painter->drawPoint(point);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace Qt
|
||||
} // namespace CGAL
|
||||
|
||||
#endif // CGAL_Q_CONSTRAINED_TRIANGULATION_GRAPHICS_ITEM_H
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
|
||||
\begin{ccPkgDescription}{Topology Preserving Polyline Simplification\label{Pkg:PolylineSimplification}}
|
||||
\ccPkgHowToCiteCgal{cgal:cf-ps-12}
|
||||
\ccPkgSummary{This package provides an algorithm to simplify polylines while keeping the
|
||||
overall shape as much as possible. Furthermore the topology is maintained, that is
|
||||
the algorithm introduces no intersections, and does not change the nesting level of a polygon.}
|
||||
|
||||
\ccPkgDependsOn{ \ccRef[Triangulation2]{Pkg:Triangulation2}}
|
||||
\ccPkgIntroducedInCGAL{4.1}
|
||||
\ccPkgLicense{\ccLicenseGPL}
|
||||
\ccPkgDemo{Polyline simplification}{demo/polyline_simplification_2.zip}
|
||||
\ccPkgIllustration{Polyline_simplification_2/fig/detail.png}{Polyline_simplification_2/fig/Illustration-Simplification-ALL.jpg}
|
||||
\end{ccPkgDescription}
|
||||
|
|
@ -0,0 +1,215 @@
|
|||
\begin{figure}[ht]
|
||||
\begin{center}
|
||||
\begin{ccTexOnly}
|
||||
|
||||
\includegraphics[height=4cm]{Polyline_simplification_2/norway.png}
|
||||
|
||||
\end{ccTexOnly}
|
||||
\begin{ccHtmlOnly}
|
||||
<img border="0" src="./norway.png"><br/>
|
||||
\end{ccHtmlOnly}
|
||||
\caption{A fjord in Norway and it's simplified version.}
|
||||
\label{figure:simplified_norway}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
|
||||
\section{Introduction}
|
||||
Polyline simplification is the process of reducing the
|
||||
number of vertices used in a set of polylines while keeping the
|
||||
overall shape as much as possible.
|
||||
|
||||
|
||||
Topology preserving polyline simplification means that neither intersections are introduced,
|
||||
nor the nesting level of a polygon changes: islands do not intersect
|
||||
a simplified coastline, and islands stay in the water.
|
||||
|
||||
The method implemented in this package is based on
|
||||
\cite{cgal:dds-scs-09}. It can simplify any set of polylines, open or
|
||||
closed, and possibly intersecting themselves or each other. The method
|
||||
consists of iteratively replacing edges \ccc{(p,q)} and \ccc{(q,r)} with edge
|
||||
\ccc{(p,r)} by removing the vertex $q$ from one polyline. The topology of
|
||||
the polyline set is preserved during the simplification as the
|
||||
algorithm guarantees that no new intersections occur as a result of
|
||||
removing a vertex.
|
||||
|
||||
Vertices are removed according to a priority given for the vertex by a user-supplied {\em cost} function which
|
||||
calculates the {\em simplification error}. The cost function is a measure of the deviation between the original polyline
|
||||
and the current polyline without the vertex.
|
||||
|
||||
The algorithm terminates when a user-supplied {\em stop predicate} returns true, for instance,
|
||||
upon reaching a desired number of vertices or reaching a maximum cost.
|
||||
|
||||
The polyline simplification algorithm operates on a triangulation class from
|
||||
Chapter~\ref{Chapter_2D_Triangulations}, namely \ccc{Polyline_constrained_triangulation_2<Tr>}.
|
||||
This data structure allows to remove vertices of a polyline constraint, while keeping the
|
||||
points of the removed vertices of the polyline constraint. The fact that it is a triangulation
|
||||
allows to perform the topology check for vertices $p,q,r$ efficiently, as this can be decided
|
||||
based on the set of vertices adjacent to $q$ in the triangulation.
|
||||
|
||||
|
||||
\begin{figure}[ht]
|
||||
\begin{center}
|
||||
\begin{ccTexOnly}
|
||||
\includegraphics[height=3cm]{Polyline_simplification_2/platelet.png}
|
||||
\end{ccTexOnly}
|
||||
\begin{ccHtmlOnly}
|
||||
<img border="0" src="./platelet.png">
|
||||
\end{ccHtmlOnly}
|
||||
\label{figure:platelet}
|
||||
\end{center}
|
||||
\caption{Check if vertex $q$ can be removed.}
|
||||
\end{figure}
|
||||
|
||||
|
||||
\section{Cost Functions}
|
||||
|
||||
The specific way in which the removal cost is
|
||||
calculated is called the {\em cost} function. The user can choose
|
||||
different strategies by choosing a cost function object.
|
||||
|
||||
This package provides the three cost functions formulated in \cite{cgal:dds-scs-09}.
|
||||
As the cost function is a template argument of the simplification function,
|
||||
users can write and use their own.
|
||||
The provided cost functions are all based on measuring the Euclidean distance
|
||||
between a subsequence of the original polyline and the corresponding subsequence of the simplified polyline
|
||||
with the vertex whose cost is calculated being removed.
|
||||
|
||||
Let vertices \ccc{p}, \ccc{q}, and \ccc{r} be three consecutive vertices of a polyline constraint. If the vertex \ccc{q} is removed,
|
||||
the edges \ccc{(p,q)} and \ccc{(q,r)} would be replaced by the
|
||||
edge \ccc{(p,r)}.
|
||||
|
||||
|
||||
\subsection{Maximum Squared Distance}
|
||||
|
||||
|
||||
The maximum squared distance is the maximum of the squared Euclidean distances between each
|
||||
point on the original polyline between \ccc{p} and \ccc{r} and the line segment \ccc{(p,r)}. Let $s_0,...,s_n$ be the points strictly between \ccc{p} and \ccc{r} on the original polyline.
|
||||
The cost of removing vertex \ccc{q} is: $ v_1 = \max \{ sdist((p,r), s_i) | i=0,..,n\} $
|
||||
|
||||
\begin{figure}[ht]
|
||||
\begin{center}
|
||||
\begin{ccTexOnly}
|
||||
\includegraphics[height=3cm]{Polyline_simplification_2/maxDist.png}
|
||||
\end{ccTexOnly}
|
||||
\begin{ccHtmlOnly}
|
||||
<img border="0" src="./maxDist.png">
|
||||
\end{ccHtmlOnly}
|
||||
\label{figure:maxDist}
|
||||
\end{center}
|
||||
\caption{The maximum squared distance between \ccc{q} and \ccc{(p,r)}}
|
||||
\end{figure}
|
||||
|
||||
|
||||
\subsection{Scaled Maximum Squared Distance}
|
||||
|
||||
When it is important to preserve the separation of adjacent polylines, a variation of the maximum squared
|
||||
distance cost can be used. Here the maximum is divided by the minimum squared Euclidean distance between
|
||||
the candidate vertex \ccc{q} and all its adjacent vertices (except \ccc{p} and \ccc{r}). Those are all vertices in
|
||||
adjacent polylines, or adjacent regions of the same polyline.
|
||||
|
||||
Let $t_0,...,t_m$ be the points of the vertices adjacent to vertex \ccc{q}, different from \ccc{p} and \ccc{r} and let $ v_2 = \max \{ sdist((p,r), t_i) | i=0,..,n\}$. The cost of removing vertex \ccc{q} is $v_1/v_2$.
|
||||
|
||||
This distance measure gives lower priority to vertices with close neighboring polylines.
|
||||
|
||||
\subsection{Hybrid Maximum Squared Distance}
|
||||
|
||||
The scaled maximum works well in areas with close neighboring polylines, while the absolute maximum works {\em better}
|
||||
in areas where the polylines are far apart. In certain applications such as cartographic contours, there are both dense
|
||||
and spare areas, so a good strategy is to use a scaled or an absolute maximum depending on the case.
|
||||
|
||||
The hybrid distance measure uses a parameter \ccc{R} to indicate which measure to use: if $v_2$ , i.e., the minimum distance to adjacent vertices,
|
||||
is below \ccc{R}, the scaled maximum is used, otherwise the absolute maximum is used.
|
||||
|
||||
The cost of removing vertex \ccc{q} is $v_1/v_2$, if $v_2 <R$, and $v_1/R$, otherwise.
|
||||
|
||||
As Dyken\&al.\ explain, the choice of a good value for $R$ is problem
|
||||
specific. It may depend on the pen size or the pixel size when
|
||||
drawing, or on the grid size when the polyline points are on a grid.
|
||||
|
||||
\begin{figure}[ht]
|
||||
\begin{center}
|
||||
\begin{ccTexOnly}
|
||||
\includegraphics[height=3cm]{Polyline_simplification_2/scaledAndHybridMaxDist.png}
|
||||
\end{ccTexOnly}
|
||||
\begin{ccHtmlOnly}
|
||||
<img border="0" src="./scaledAndHybridMaxDist.png">
|
||||
\end{ccHtmlOnly}
|
||||
\label{figure:scaledAndHybrid}
|
||||
\end{center}
|
||||
\caption{The scaled and hybrid maximum squared distance between \ccc{q} and \ccc{(p,r)}}
|
||||
\end{figure}
|
||||
|
||||
\newpage
|
||||
\section{Examples}
|
||||
|
||||
The first example shows how to simplify a \ccc{CGAL::Polygon_2}. We then show
|
||||
how to simplify simultaneously several polylines, and show how to mark polyline vertices
|
||||
so that they do not get removed. The last example shows how to keep, access,
|
||||
and really remove points of polyline vertices that got removed by the simplification.
|
||||
|
||||
\subsection{Simplifying a Polygon}
|
||||
|
||||
The first example shows how to simplify a single polyline by halving the number of vertices.
|
||||
|
||||
\ccIncludeExampleCode{Polyline_simplification_2/simplify_polygon.cpp}
|
||||
|
||||
\newpage
|
||||
\subsection{Simplifying Several Polylines}
|
||||
|
||||
In the second example we insert several polygons in a \ccc{Polyline_simplification_2}. Assuming that the polygons do not intersect, we can
|
||||
take the default template parameters for the \ccc{Constrained_Delaunay_triangulation_2}.
|
||||
|
||||
Before calling \ccc{Polyline_simplification_2::simplify} we mark some polyline vertices as not
|
||||
removable.
|
||||
This package provides a convenience function \ccc{Polyline_simplification_2::mark_vertices_unremovable} that marks
|
||||
the vertices with smallest and largest \ccc{x} and \ccc{y} coordinates
|
||||
of each polyline constraint as non-removable.
|
||||
The class \ccc{Polyline_constrained_triangulation_2<Tr>}
|
||||
offers functions to mark individual polyline vertices as non removable.
|
||||
Finally, we iterate over all vertices of all polyline constraints.
|
||||
|
||||
\ccIncludeExampleCode{Polyline_simplification_2/simplify.cpp}
|
||||
|
||||
\newpage
|
||||
\subsection{Keeping Points While Removing Vertices}
|
||||
|
||||
In this example we show the version of \ccc{Polyline_simplification_2::simplify}
|
||||
that simplifies a single polyline constraint, and keeps
|
||||
the points while removing vertices.
|
||||
|
||||
During the simplification the cost functions need the original
|
||||
sequence of points.
|
||||
As explained in the introduction the \ccc{Polyline_constrained_triangulation_2<Tr>} allows to remove vertices from a polyline constraint,
|
||||
and hence from the triangulation, while keeping the
|
||||
point in the polyline constraint. This explains why there is
|
||||
a \ccc{Vertex_in_constraint_iterator} and a
|
||||
\ccc{Point_in_constraint_iterator}.
|
||||
|
||||
With the last argument of \ccc{Polyline_simplification_2::simplify} set
|
||||
to \ccc{true}, we can keep the points even when
|
||||
the simplification function has returned.
|
||||
We might want to keep them,
|
||||
because we want to call \ccc{Polyline_simplification_2::simplify} once again
|
||||
for the same polyline constraint, while measuring the simplification
|
||||
error against the original polyline.
|
||||
|
||||
The print function traverses each polyline constraint
|
||||
twice. First to print the points on the simplified polyline, and
|
||||
then to print the points of the original polyline.
|
||||
|
||||
At< the end we remove the points that were kept from the constraints.
|
||||
|
||||
\ccIncludeExampleCode{Polyline_simplification_2/points_and_vertices.cpp}
|
||||
|
||||
|
||||
\section{Design and Implementation History}
|
||||
|
||||
Dyken et al \cite{cgal:dds-scs-09} combine a classical polyline simplification algorithm
|
||||
with the triangulation of polylines in order to check if an elementary simplification step can be
|
||||
performed. In our implementation we simplified this test even further.
|
||||
|
||||
Fernando Cacciola made a first prototype implementation for GeometryFactory, and Andreas Fabri
|
||||
developed the \ccc{Polyline_constrained_triangulation<Tr>} and the final version of this package.
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
\ccUserChapter{Topology Preserving Polyline Simplification\label{chapter-polylinesimplification}}
|
||||
\ccChapterAuthor{Andreas Fabri \ and Fernando Cacciola}
|
||||
|
||||
% \input{Polyline_simplification_2/PkgDescription.tex}
|
||||
|
||||
\minitoc
|
||||
|
||||
\input{Polyline_simplification_2/Polyline_simplification_2.tex}
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 23 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 81 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
|
|
@ -0,0 +1,94 @@
|
|||
% +------------------------------------------------------------------------+
|
||||
% | Reference manual page: Hybrid_squared_distance_cost.tex
|
||||
% +------------------------------------------------------------------------+
|
||||
% | April 2009 Fernando Cacciola
|
||||
% | Package: Polyline_simplification_2
|
||||
% |
|
||||
\RCSdef{\RCSHybridsquareddistancecostRev}{$Id: header.tex 40270 2007-09-07 15:29:10Z lsaboret $}
|
||||
\RCSdefDate{\RCSHybridsquareddistancecostDate}{$Date: 2007-09-07 12:29:10 -0300 (Fri, 07 Sep 2007) $}
|
||||
% |
|
||||
\ccRefPageBegin
|
||||
%%RefPage: end of header, begin of main body
|
||||
% +------------------------------------------------------------------------+
|
||||
|
||||
|
||||
\begin{ccRefClass}{Polyline_simplification_2::Hybrid_squared_distance_cost<FT>} %% add template arg's if necessary
|
||||
|
||||
%% \ccHtmlCrossLink{} %% add further rules for cross referencing links
|
||||
%% \ccHtmlIndexC[class]{} %% add further index entries
|
||||
|
||||
\ccDefinition
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccDefinition)
|
||||
|
||||
This class is a cost function which calculates the cost as the square of the distance between the original and simplified polylines, possibly scaled by a factor.
|
||||
|
||||
%END-AUTO(\ccDefinition)
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccInclude)
|
||||
|
||||
\ccInclude{CGAL/Polyline_simplification_2/simplify.h}
|
||||
|
||||
%END-AUTO(\ccInclude)
|
||||
|
||||
\ccIsModel
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccIsModel)
|
||||
|
||||
\ccc{PolylineSimplificationCostFunction}.
|
||||
|
||||
%END-AUTO(\ccIsModel)
|
||||
|
||||
\ccCreation
|
||||
\ccCreationVariable{cost} %% choose variable name
|
||||
|
||||
% Reduce left margin
|
||||
\ccThree{12}{12}{}
|
||||
\ccThreeToTwo
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccCreation)
|
||||
|
||||
\ccConstructor{Hybrid_squared_distance_cost(FT ratio);}
|
||||
{
|
||||
Initializes the cost function with the specified {\em ratio}.
|
||||
}
|
||||
\ccGlue
|
||||
|
||||
%END-AUTO(\ccCreation)
|
||||
|
||||
\ccOperations
|
||||
|
||||
% Reduce left margin
|
||||
\ccThree{12}{12}{}
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccOperations)
|
||||
|
||||
\ccMethod{template <class Tr>
|
||||
boost::optional<Tr::Geom_traits::FT>
|
||||
operator()(Polyline_constrained_triangulation_2<Tr> const& pct,
|
||||
Polyline_constrained_triangulation_2<Tr>::Vertices_in_constraint_iterator vip,
|
||||
Polyline_constrained_triangulation_2<Tr>::Vertices_in_constraint_iterator viq,
|
||||
Polyline_constrained_triangulation_2<Tr>::Vertices_in_constraint_iterator vir) const;}
|
||||
|
||||
{ Returns the maximal square distance between the straight line segment \ccc{(*vip,*vir)}
|
||||
and all points of the original polyline between \ccc{*vip} and \ccc{*viq},
|
||||
divided by the smallest of the square of \ccc{ratio}, and the shortest squared distance between that segment
|
||||
and each of the vertices adjacent to \ccc{*viq}. }
|
||||
|
||||
\ccGlue
|
||||
|
||||
%END-AUTO(\ccOperations)
|
||||
|
||||
\end{ccRefClass}
|
||||
|
||||
% +------------------------------------------------------------------------+
|
||||
%%RefPage: end of main body, begin of footer
|
||||
\ccRefPageEnd
|
||||
% EOF
|
||||
% +------------------------------------------------------------------------+
|
||||
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
% +------------------------------------------------------------------------+
|
||||
% | Reference manual page: PolylineSimplificationCostFunction.tex
|
||||
% +------------------------------------------------------------------------+
|
||||
% | April 2009 Fernando Cacciola
|
||||
% | Package: Package
|
||||
% |
|
||||
\RCSdef{\RCSPolylineSimplificationCostFunctionRev}{$Id: header.tex 40270 2007-09-07 15:29:10Z lsaboret $}
|
||||
\RCSdefDate{\RCSPolylineSimplificationCostFunctionDate}{$Date: 2007-09-07 12:29:10 -0300 (Fri, 07 Sep 2007) $}
|
||||
% |
|
||||
\ccRefPageBegin
|
||||
%%RefPage: end of header, begin of main body
|
||||
% +------------------------------------------------------------------------+
|
||||
|
||||
|
||||
\begin{ccRefConcept}{PolylineSimplificationCostFunction}
|
||||
|
||||
%% \ccHtmlCrossLink{} %% add further rules for cross referencing links
|
||||
%% \ccHtmlIndexC[concept]{} %% add further index entries
|
||||
|
||||
\ccDefinition
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccDefinition)
|
||||
|
||||
Models of this concept are passed to the polyline simplification algorithm to calculate the {\em cost} of removing a vertex. Such a cost represents some measure of the deviation error between the polyline sets before and after removal. The smaller the error the lower the cost. The algoritm processes vertices in increasing cost order to preserve the overall polyline set shape as much as possible.
|
||||
|
||||
%END-AUTO(\ccDefinition)
|
||||
|
||||
\ccCreationVariable{cost} %% choose variable name
|
||||
|
||||
\ccOperations
|
||||
|
||||
% Reduce left margin
|
||||
\ccThree{12}{12}{}
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccOperations)
|
||||
|
||||
\ccMethod{boost::optional<Polyline_constrained_triangulation_2<Tr>::Geom_traits::FT>
|
||||
operator()(Polyline_constrained_triangulation_2<Tr> const& pct,
|
||||
Polyline_constrained_triangulation_2<Tr>::Vertices_in_constraint_iterator vip,
|
||||
Polyline_constrained_triangulation_2<Tr>::Vertices_in_constraint_iterator viq,
|
||||
Polyline_constrained_triangulation_2<Tr>::Vertices_in_constraint_iterator vir) const;}
|
||||
{
|
||||
Given three consecutive polyline vertices \ccc{*vip, *viq, *vir}, calculates the cost of removing vertex \ccc{*viq}, replacing edges \ccc{(*vip,*viq)} and \ccc{(*viq,*vir)} with edge \ccc{(*vip,*vir)}.
|
||||
\ccCommentHeading{Parameters} \\
|
||||
\ccc{pct}: The underlying polyline constrained triangulation which embeds the polyline set.
|
||||
\ccCommentHeading{Returns} The cost for removing \ccc{*viq}. A result of {\em \ccc{boost::none}} can be used to indicate an infinite or uncomputable cost.\\
|
||||
\ccc{Tr::Geom_traits} must provide a functor \ccc{Compute_squared_distance} with an operator \ccc{Tr::Geom_traits::FT operator()(Tr::Point, Tr::Point)}.
|
||||
}
|
||||
\ccGlue
|
||||
|
||||
%END-AUTO(\ccOperations)
|
||||
|
||||
\ccHasModels
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccHasModels)
|
||||
|
||||
\ccc{Polyline_simplification_2::Hybrid_squared_distance_cost} \\
|
||||
\ccc{Polyline_simplification_2::Scaled_squared_distance_cost} \\
|
||||
\ccc{Polyline_simplification_2::Squared_distance_cost}
|
||||
|
||||
%END-AUTO(\ccHasModels)
|
||||
|
||||
\end{ccRefConcept}
|
||||
|
||||
% +------------------------------------------------------------------------+
|
||||
%%RefPage: end of main body, begin of footer
|
||||
\ccRefPageEnd
|
||||
% EOF
|
||||
% +------------------------------------------------------------------------+
|
||||
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
% +------------------------------------------------------------------------+
|
||||
% | Reference manual page: PolylineSimplificationStopPredicate.tex
|
||||
% +------------------------------------------------------------------------+
|
||||
% | April 2009 Fernando Cacciola
|
||||
% | Package: Package
|
||||
% |
|
||||
\RCSdef{\RCSPolylineSimplificationStopPredicateRev}{$Id: header.tex 40270 2007-09-07 15:29:10Z lsaboret $}
|
||||
\RCSdefDate{\RCSPolylineSimplificationStopPredicateDate}{$Date: 2007-09-07 12:29:10 -0300 (Fri, 07 Sep 2007) $}
|
||||
% |
|
||||
\ccRefPageBegin
|
||||
%%RefPage: end of header, begin of main body
|
||||
% +------------------------------------------------------------------------+
|
||||
|
||||
|
||||
\begin{ccRefConcept}{PolylineSimplificationStopPredicate}
|
||||
|
||||
%% \ccHtmlCrossLink{} %% add further rules for cross referencing links
|
||||
%% \ccHtmlIndexC[concept]{} %% add further index entries
|
||||
|
||||
\ccDefinition
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccDefinition)
|
||||
|
||||
Models of this concept are passed to the polyline simplification algorithm to indicate when to stop.
|
||||
|
||||
%END-AUTO(\ccDefinition)
|
||||
|
||||
\ccCreationVariable{stop} %% choose variable name
|
||||
|
||||
\ccOperations
|
||||
|
||||
% Reduce left margin
|
||||
\ccThree{12}{12}{}
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccOperations)
|
||||
|
||||
\ccMethod{template<class Tr>
|
||||
bool operator()(Polyline_constrained_triangulation_2<Tr> const& pct,
|
||||
Polyline_constrained_triangulation_2<Tr>::Vertices_in_constraint_iterator viq,
|
||||
Polyline_constrained_triangulation_2<Tr>::FT cost,
|
||||
std::size_t initial_count,
|
||||
std::size_t current_count) const;}
|
||||
{
|
||||
Indicates if the simplification must be stopped. This method is called right before each vertex is about to be removed
|
||||
\ccCommentHeading{Parameters} \\
|
||||
\ccc{cdt}: The underlying polyline constrained Delaunay triangulation which embeds the polyline set.\\
|
||||
\ccc{viq}: The current vertex about to be removed.\\
|
||||
\ccc{cost}: The associated cost for removing the current vertex (as given by \ccc{PolylineSimplificationCostFunction}).\\
|
||||
\ccc{initial_count}: The initial number of vertices in the entire polyline set (including intersection vertices not in any source polyline).\\
|
||||
\ccc{current_count}: The current number of vertices.
|
||||
\ccCommentHeading{Returns} \ccc{true} if the algorithm shall stop, \ccc{false} if it shall continue.
|
||||
}
|
||||
\ccGlue
|
||||
|
||||
%END-AUTO(\ccOperations)
|
||||
|
||||
\ccHasModels
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccHasModels)
|
||||
|
||||
\ccc{Polyline_simplification_2::Stop_below_count_ratio_threshold} \\
|
||||
\ccc{Polyline_simplification_2::Stop_below_count_threshold} \\
|
||||
\ccc{Polyline_simplification_2::Stop_below_cost_threshold}
|
||||
|
||||
%END-AUTO(\ccHasModels)
|
||||
|
||||
\end{ccRefConcept}
|
||||
|
||||
% +------------------------------------------------------------------------+
|
||||
%%RefPage: end of main body, begin of footer
|
||||
\ccRefPageEnd
|
||||
% EOF
|
||||
% +------------------------------------------------------------------------+
|
||||
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
% +------------------------------------------------------------------------+
|
||||
% | Reference manual page: Scaled_squared_distance_cost.tex
|
||||
% +------------------------------------------------------------------------+
|
||||
% | April 2009 Fernando Cacciola
|
||||
% | Package: Polyline_simplification_2
|
||||
% |
|
||||
\RCSdef{\RCSScaledsquareddistancecostRev}{$Id: header.tex 40270 2007-09-07 15:29:10Z lsaboret $}
|
||||
\RCSdefDate{\RCSScaledsquareddistancecostDate}{$Date: 2007-09-07 12:29:10 -0300 (Fri, 07 Sep 2007) $}
|
||||
% |
|
||||
\ccRefPageBegin
|
||||
%%RefPage: end of header, begin of main body
|
||||
% +------------------------------------------------------------------------+
|
||||
|
||||
|
||||
\begin{ccRefClass}{Polyline_simplification_2::Scaled_squared_distance_cost} %% add template arg's if necessary
|
||||
|
||||
%% \ccHtmlCrossLink{} %% add further rules for cross referencing links
|
||||
%% \ccHtmlIndexC[class]{} %% add further index entries
|
||||
|
||||
\ccDefinition
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccDefinition)
|
||||
|
||||
This class is a cost function which calculates the cost as a scaled variant of the square of the distance between the original and simplified polylines.
|
||||
|
||||
%END-AUTO(\ccDefinition)
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccInclude)
|
||||
|
||||
\ccInclude{CGAL/Polyline_simplification_2/simplify.h}
|
||||
|
||||
%END-AUTO(\ccInclude)
|
||||
|
||||
\ccIsModel
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccIsModel)
|
||||
|
||||
\ccc{PolylineSimplificationCostFunction}
|
||||
|
||||
%END-AUTO(\ccIsModel)
|
||||
|
||||
\ccCreation
|
||||
\ccCreationVariable{cost} %% choose variable name
|
||||
|
||||
% Reduce left margin
|
||||
\ccThree{12}{12}{}
|
||||
\ccThreeToTwo
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccCreation)
|
||||
|
||||
\ccConstructor{Scaled_squared_distance_cost();}
|
||||
{
|
||||
Initializes the cost function.
|
||||
}
|
||||
\ccGlue
|
||||
|
||||
%END-AUTO(\ccCreation)
|
||||
|
||||
\ccOperations
|
||||
|
||||
% Reduce left margin
|
||||
\ccThree{12}{12}{}
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccOperations)
|
||||
|
||||
\ccMethod{template <class Tr>
|
||||
boost::optional<Tr::Geom_traits::FT>
|
||||
operator()(Polyline_constrained_triangulation_2<Tr> const& pct,
|
||||
Polyline_constrained_triangulation_2<Tr>::Vertices_in_constraint_iterator vip,
|
||||
Polyline_constrained_triangulation_2<Tr>::Vertices_in_constraint_iterator viq,
|
||||
Polyline_constrained_triangulation_2<Tr>::Vertices_in_constraint_iterator vir) const;}
|
||||
{ Returns the maximal square distance between the straight line segment \ccc{(*vip,*vir)}
|
||||
and all points of the original polyline between \ccc{*vip} and \ccc{*viq},
|
||||
divided by the shortest squared distance between that segment and each of the vertices adjacent to \ccc{*viq}.}
|
||||
\ccGlue
|
||||
|
||||
%END-AUTO(\ccOperations)
|
||||
|
||||
\end{ccRefClass}
|
||||
|
||||
% +------------------------------------------------------------------------+
|
||||
%%RefPage: end of main body, begin of footer
|
||||
\ccRefPageEnd
|
||||
% EOF
|
||||
% +------------------------------------------------------------------------+
|
||||
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
% +------------------------------------------------------------------------+
|
||||
% | Reference manual page: Squared_distance_cost.tex
|
||||
% +------------------------------------------------------------------------+
|
||||
% | April 2009 Fernando Cacciola
|
||||
% | Package: Polyline_simplification_2
|
||||
% |
|
||||
\RCSdef{\RCSSquareddistancecostRev}{$Id: header.tex 40270 2007-09-07 15:29:10Z lsaboret $}
|
||||
\RCSdefDate{\RCSSquareddistancecostDate}{$Date: 2007-09-07 12:29:10 -0300 (Fri, 07 Sep 2007) $}
|
||||
% |
|
||||
\ccRefPageBegin
|
||||
%%RefPage: end of header, begin of main body
|
||||
% +------------------------------------------------------------------------+
|
||||
|
||||
|
||||
\begin{ccRefClass}{Polyline_simplification_2::Squared_distance_cost<FT>} %% add template arg's if necessary
|
||||
|
||||
%% \ccHtmlCrossLink{} %% add further rules for cross referencing links
|
||||
%% \ccHtmlIndexC[class]{} %% add further index entries
|
||||
|
||||
\ccDefinition
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccDefinition)
|
||||
|
||||
This class is a cost function which calculates the cost as the square of the distance between the original and simplified polylines.
|
||||
|
||||
%END-AUTO(\ccDefinition)
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccInclude)
|
||||
|
||||
\ccInclude{CGAL/Polyline_simplification_2/simplify.h}
|
||||
|
||||
%END-AUTO(\ccInclude)
|
||||
|
||||
\ccIsModel
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccIsModel)
|
||||
|
||||
\ccc{PolylineSimplificationCostFunction}
|
||||
|
||||
%END-AUTO(\ccIsModel)
|
||||
|
||||
\ccCreation
|
||||
\ccCreationVariable{cost} %% choose variable name
|
||||
|
||||
% Reduce left margin
|
||||
\ccThree{12}{12}{}
|
||||
\ccThreeToTwo
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccCreation)
|
||||
|
||||
\ccConstructor{Squared_distance_cost();}
|
||||
{
|
||||
Initializes the cost function.
|
||||
}
|
||||
\ccGlue
|
||||
|
||||
%END-AUTO(\ccCreation)
|
||||
|
||||
\ccOperations
|
||||
|
||||
% Reduce left margin
|
||||
\ccThree{12}{12}{}
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccOperations)
|
||||
|
||||
\ccMethod{template <class Tr>
|
||||
boost::optional<Tr::Geom_traits::FT>
|
||||
operator()(Polyline_constrained_triangulation_2<Tr> const& pct,
|
||||
Polyline_constrained_triangulation_2<Tr>::Vertices_in_constraint_iterator vip,
|
||||
Polyline_constrained_triangulation_2<Tr>::Vertices_in_constraint_iterator viq,
|
||||
Polyline_constrained_triangulation_2<Tr>::Vertices_in_constraint_iterator vir) const;}
|
||||
{ Returns the maximal square distance between the straight line segment \ccc{(*vip,*vir)}
|
||||
and all points of the original polyline between \ccc{*vip} and \ccc{*viq}.}
|
||||
\ccGlue
|
||||
|
||||
%END-AUTO(\ccOperations)
|
||||
|
||||
\end{ccRefClass}
|
||||
|
||||
% +------------------------------------------------------------------------+
|
||||
%%RefPage: end of main body, begin of footer
|
||||
\ccRefPageEnd
|
||||
% EOF
|
||||
% +------------------------------------------------------------------------+
|
||||
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
% +------------------------------------------------------------------------+
|
||||
% | Reference manual page: Stop_above_cost_threshold.tex
|
||||
% +------------------------------------------------------------------------+
|
||||
% | April 2009 Fernando Cacciola
|
||||
% | Package: Polyline_simplification_2
|
||||
% |
|
||||
% |
|
||||
\ccRefPageBegin
|
||||
%%RefPage: end of header, begin of main body
|
||||
% +------------------------------------------------------------------------+
|
||||
|
||||
|
||||
\begin{ccRefClass}{Polyline_simplification_2::Stop_above_cost_threshold<FT>} %% add template arg's if necessary
|
||||
|
||||
%% \ccHtmlCrossLink{} %% add further rules for cross referencing links
|
||||
%% \ccHtmlIndexC[class]{} %% add further index entries
|
||||
|
||||
\ccDefinition
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccDefinition)
|
||||
|
||||
This class is a stop predicate returning true if the cost for simplifying a vertex is larger than a certain threshold.
|
||||
|
||||
%END-AUTO(\ccDefinition)
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccInclude)
|
||||
|
||||
\ccInclude{CGAL/Polyline_simplification_2/simplify.h}
|
||||
|
||||
%END-AUTO(\ccInclude)
|
||||
|
||||
\ccIsModel
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccIsModel)
|
||||
|
||||
\ccc{PolylineSimplificationStopPredicate}
|
||||
|
||||
%END-AUTO(\ccIsModel)
|
||||
|
||||
\ccCreation
|
||||
\ccCreationVariable{stop} %% choose variable name
|
||||
|
||||
% Reduce left margin
|
||||
\ccThree{12}{12}{}
|
||||
\ccThreeToTwo
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccCreation)
|
||||
|
||||
\ccConstructor{template <class FT>
|
||||
Stop_above_cost_threshold(FT threshold);}
|
||||
{
|
||||
Initializes it with the given threshold value.
|
||||
}
|
||||
\ccGlue
|
||||
|
||||
%END-AUTO(\ccCreation)
|
||||
|
||||
\ccOperations
|
||||
|
||||
% Reduce left margin
|
||||
\ccThree{12}{12}{}
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccOperations)
|
||||
|
||||
\ccMethod{template<class Tr>
|
||||
bool operator()(Polyline_constrained_triangulation<Tr> const& pct,
|
||||
Polyline_constrained_triangulation_2<Tr>::Vertices_in_constraint_iterator viq,
|
||||
FT cost,
|
||||
std::size_t initial_count,
|
||||
std::size_t current_count) const;}
|
||||
{
|
||||
Returns true when {\em cost} is larger than \ccc{threshold}.
|
||||
}
|
||||
\ccGlue
|
||||
|
||||
%END-AUTO(\ccOperations)
|
||||
|
||||
\end{ccRefClass}
|
||||
|
||||
% +------------------------------------------------------------------------+
|
||||
%%RefPage: end of main body, begin of footer
|
||||
\ccRefPageEnd
|
||||
% EOF
|
||||
% +------------------------------------------------------------------------+
|
||||
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
% +------------------------------------------------------------------------+
|
||||
% | Reference manual page: Stop_below_count_ratio_threshold.tex
|
||||
% +------------------------------------------------------------------------+
|
||||
% | April 2009 Fernando Cacciola
|
||||
% | Package: Polyline_simplification_2
|
||||
% |
|
||||
\RCSdef{\RCSStopbelowcountratiothresholdRev}{$Id: header.tex 40270 2007-09-07 15:29:10Z lsaboret $}
|
||||
\RCSdefDate{\RCSStopbelowcountratiothresholdDate}{$Date: 2007-09-07 12:29:10 -0300 (Fri, 07 Sep 2007) $}
|
||||
% |
|
||||
\ccRefPageBegin
|
||||
%%RefPage: end of header, begin of main body
|
||||
% +------------------------------------------------------------------------+
|
||||
|
||||
|
||||
\begin{ccRefClass}{Polyline_simplification_2::Stop_below_count_ratio_threshold} %% add template arg's if necessary
|
||||
|
||||
%% \ccHtmlCrossLink{} %% add further rules for cross referencing links
|
||||
%% \ccHtmlIndexC[class]{} %% add further index entries
|
||||
|
||||
\ccDefinition
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccDefinition)
|
||||
|
||||
This class is a stop predicate returning true when the percentage of the remaning vertices is smaller than a certain threshold.
|
||||
|
||||
%END-AUTO(\ccDefinition)
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccInclude)
|
||||
|
||||
\ccInclude{CGAL/Polyline_simplification_2/simplify.h}
|
||||
|
||||
%END-AUTO(\ccInclude)
|
||||
|
||||
\ccIsModel
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccIsModel)
|
||||
|
||||
\ccc{PolylineSimplificationStopPredicate}
|
||||
|
||||
%END-AUTO(\ccIsModel)
|
||||
|
||||
\ccCreation
|
||||
\ccCreationVariable{stop} %% choose variable name
|
||||
|
||||
% Reduce left margin
|
||||
\ccThree{12}{12}{}
|
||||
\ccThreeToTwo
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccCreation)
|
||||
|
||||
\ccConstructor{Stop_below_count_ratio_threshold(double threshold);}
|
||||
{
|
||||
Initializes it with the given threshold value.
|
||||
}
|
||||
\ccGlue
|
||||
|
||||
%END-AUTO(\ccCreation)
|
||||
|
||||
\ccOperations
|
||||
|
||||
% Reduce left margin
|
||||
\ccThree{12}{12}{}
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccOperations)
|
||||
|
||||
\ccMethod{template<class Tr>
|
||||
bool operator()(Polyline_constrained_triangulation<Tr> const& pct,
|
||||
Polyline_constrained_triangulation_2<Tr>::Vertices_in_constraint_iterator viq,
|
||||
Polyline_constrained_triangulation_2<Tr>::FT cost,
|
||||
std::size_t initial_count,
|
||||
std::size_t current_count) const;}
|
||||
{
|
||||
Returns \ccc{true} when \ccc{current_count / initial_count} is smaller or equal than \ccc{threshold}.
|
||||
}
|
||||
\ccGlue
|
||||
|
||||
%END-AUTO(\ccOperations)
|
||||
|
||||
\end{ccRefClass}
|
||||
|
||||
% +------------------------------------------------------------------------+
|
||||
%%RefPage: end of main body, begin of footer
|
||||
\ccRefPageEnd
|
||||
% EOF
|
||||
% +------------------------------------------------------------------------+
|
||||
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
% +------------------------------------------------------------------------+
|
||||
% | Reference manual page: Stop_below_count_threshold.tex
|
||||
% +------------------------------------------------------------------------+
|
||||
% | April 2009 Fernando Cacciola
|
||||
% | Package: Polyline_simplification_2
|
||||
% |
|
||||
\RCSdef{\RCSStopbelowcountthresholdRev}{$Id: header.tex 40270 2007-09-07 15:29:10Z lsaboret $}
|
||||
\RCSdefDate{\RCSStopbelowcountthresholdDate}{$Date: 2007-09-07 12:29:10 -0300 (Fri, 07 Sep 2007) $}
|
||||
% |
|
||||
\ccRefPageBegin
|
||||
%%RefPage: end of header, begin of main body
|
||||
% +------------------------------------------------------------------------+
|
||||
|
||||
|
||||
\begin{ccRefClass}{Polyline_simplification_2::Stop_below_count_threshold} %% add template arg's if necessary
|
||||
|
||||
%% \ccHtmlCrossLink{} %% add further rules for cross referencing links
|
||||
%% \ccHtmlIndexC[class]{} %% add further index entries
|
||||
|
||||
\ccDefinition
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccDefinition)
|
||||
|
||||
This class is a stop predicate returning the number of vertices is smaller than a certain threshold.
|
||||
|
||||
%END-AUTO(\ccDefinition)
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccInclude)
|
||||
|
||||
\ccInclude{CGAL/Polyline_simplification_2/simplify.h}
|
||||
|
||||
%END-AUTO(\ccInclude)
|
||||
|
||||
\ccIsModel
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccIsModel)
|
||||
|
||||
\ccc{PolylineSimplificationStopPredicate}.
|
||||
|
||||
%END-AUTO(\ccIsModel)
|
||||
|
||||
\ccCreation
|
||||
\ccCreationVariable{stop} %% choose variable name
|
||||
|
||||
% Reduce left margin
|
||||
\ccThree{12}{12}{}
|
||||
\ccThreeToTwo
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccCreation)
|
||||
|
||||
\ccConstructor{Stop_below_count_threshold(std::size_t threshold);}
|
||||
{
|
||||
Initializes it with the given threshold value.
|
||||
}
|
||||
\ccGlue
|
||||
|
||||
%END-AUTO(\ccCreation)
|
||||
|
||||
\ccOperations
|
||||
|
||||
% Reduce left margin
|
||||
\ccThree{12}{12}{}
|
||||
|
||||
% The section below is automatically generated. Do not edit!
|
||||
%START-AUTO(\ccOperations)
|
||||
|
||||
\ccMethod{template<class Tr>
|
||||
bool operator()(Polyline_constrained_triangulation<Tr> const& pct,
|
||||
Polyline_constrained_triangulation_2<Tr>::Vertices_in_constraint_iterator viq,
|
||||
Polyline_constrained_triangulation_2<Tr>::FT cost,
|
||||
std::size_t initial_count,
|
||||
std::size_t current_count) const;}
|
||||
{
|
||||
Returns \ccc{true} when \ccc{current_count} is smaller or equal than \ccc{threshold}.
|
||||
}
|
||||
\ccGlue
|
||||
|
||||
%END-AUTO(\ccOperations)
|
||||
|
||||
\end{ccRefClass}
|
||||
|
||||
% +------------------------------------------------------------------------+
|
||||
%%RefPage: end of main body, begin of footer
|
||||
\ccRefPageEnd
|
||||
% EOF
|
||||
% +------------------------------------------------------------------------+
|
||||
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
|
||||
\ccRefChapter{Topology Preserving Polyline Simplification \label{ref-chapter-polylinesimplification}}
|
||||
\ccChapterAuthor{Andreas Fabri \ and Fernando Cacciola}
|
||||
|
||||
This chapter introduces the concepts and classes of the polyline simplification package.
|
||||
The algorithms iteratively remove vertices according to a user defined cost and stop function,
|
||||
and the algorithm guarantees that no intersections are introduced.
|
||||
|
||||
|
||||
\section{Classified Reference Pages}
|
||||
|
||||
\subsection*{Concepts}
|
||||
\ccRefConceptPage{PolylineSimplificationCostFunction}\\
|
||||
\ccRefConceptPage{PolylineSimplificationStopPredicate}\\
|
||||
|
||||
\subsection*{Cost Functions}
|
||||
\ccRefIdfierPage{CGAL::Polyline_simplification_2::Squared_distance_cost}\\
|
||||
\ccRefIdfierPage{CGAL::Polyline_simplification_2::Scaled_squared_distance_cost}\\
|
||||
\ccRefIdfierPage{CGAL::Polyline_simplification_2::Hybrid_squared_distance_cost}
|
||||
|
||||
\subsection*{Stop Predicates}
|
||||
\ccRefIdfierPage{CGAL::Polyline_simplification_2::Stop_above_cost_threshold<FT>}\\
|
||||
\ccRefIdfierPage{CGAL::Polyline_simplification_2::Stop_below_count_threshold}\\
|
||||
\ccRefIdfierPage{CGAL::Polyline_simplification_2::Stop_below_count_ratio_threshold}
|
||||
|
||||
|
||||
|
||||
\subsection*{Functions}
|
||||
\ccRefIdfierPage{CGAL::Polyline_simplification_2::simplify}\\
|
||||
\ccRefIdfierPage{CGAL::Polyline_simplification_2::mark_vertices_unremovable}\\
|
||||
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
% +------------------------------------------------------------------------+
|
||||
% | CBP Reference Manual: main.tex
|
||||
% +------------------------------------------------------------------------+
|
||||
% | Automatically generated driver file for the reference manual chapter
|
||||
% | of this package. Do not edit manually, you may loose your changes.
|
||||
% +------------------------------------------------------------------------+
|
||||
|
||||
\input{Polyline_simplification_2_ref/intro.tex}
|
||||
\input{Polyline_simplification_2_ref/mark_vertices_unremovable.tex}
|
||||
\input{Polyline_simplification_2_ref/Hybrid_squared_distance_cost.tex}
|
||||
\input{Polyline_simplification_2_ref/PolylineSimplificationCostFunction.tex}
|
||||
\input{Polyline_simplification_2_ref/PolylineSimplificationStopPredicate.tex}
|
||||
\input{Polyline_simplification_2_ref/Scaled_squared_distance_cost.tex}
|
||||
\input{Polyline_simplification_2_ref/simplify.tex}
|
||||
\input{Polyline_simplification_2_ref/Squared_distance_cost.tex}
|
||||
\input{Polyline_simplification_2_ref/Stop_above_cost_threshold.tex}
|
||||
\input{Polyline_simplification_2_ref/Stop_below_count_ratio_threshold.tex}
|
||||
\input{Polyline_simplification_2_ref/Stop_below_count_threshold.tex}
|
||||
|
||||
%% EOF
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
\ccRefPageBegin
|
||||
|
||||
\begin{ccRefFunction}{Polyline_simplification_2::mark_vertices_unremovable}
|
||||
|
||||
\ccDefinition
|
||||
|
||||
The function \ccRefName{} marks vertices of a polyline constrained triangulation
|
||||
so that they will not get removed.
|
||||
|
||||
\ccInclude{/CGAL/Polyline_simplification_2/simplify.h}
|
||||
|
||||
\ccGlobalFunction{template <class Tr>
|
||||
std::size_t
|
||||
mark_vertices_unremovable(Polyline_constrained_triangulation<Tr>& pct);}
|
||||
{
|
||||
Marks the vertices of each polyline constraint with smallest and largest \ccc{x} and \ccc{y}
|
||||
coordinates, as well as endpoints and intersections of polylines as unremovable.
|
||||
}
|
||||
|
||||
\ccGlobalFunction{template <class Tr>
|
||||
std::size_t
|
||||
mark_vertices_unremovable(Polyline_constrained_triangulation<Tr>& pct,
|
||||
Polyline_constrained_triangulation<Tr>::Constraint_id cid);}
|
||||
{
|
||||
Marks the vertices of polyline constraint \ccc{cid} with smallest and largest \ccc{x} and \ccc{y}
|
||||
coordinates, as well as endpoints and intersections of polylines as unremovable.
|
||||
}
|
||||
\ccSeeAlso
|
||||
|
||||
\ccc{Polyline_simplification_2::simplify}
|
||||
\end{ccRefFunction}
|
||||
|
||||
\ccRefPageEnd
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
\ccRefPageBegin
|
||||
|
||||
\begin{ccRefFunction}{Polyline_simplification_2::simplify}
|
||||
|
||||
\ccDefinition
|
||||
|
||||
The function \ccRefName{} can simplify a poylgon as well as polylines embedded in a constrained triangulation.
|
||||
|
||||
After a call of \ccRefName{} the \ccc{Vertices_in_constraint_iterator}
|
||||
allows to traverse the vertices of the simplified polyline,
|
||||
and the \ccc{Points_in_constraint_iterator} allows to traverse
|
||||
the points of the original polyline. In order to also remove these
|
||||
points \ccc{Polyline_constrained_triangulation<Tr>::remove_points_from_constraints} must be called.
|
||||
|
||||
|
||||
\ccInclude{/CGAL/Polyline_simplification_2/simplify.h}
|
||||
|
||||
|
||||
|
||||
\ccGlobalFunction{template <class PolygonTraits_2, class Container, class CostFunction, class StopFunction>
|
||||
CGAL::Polygon_2<PolygonTraits_2,Container>
|
||||
simplify(const CGAL::Polygon_2<PolygonTraits_2,Container>& polygon,
|
||||
CostFunction cost,
|
||||
StopFunction stop);}
|
||||
{
|
||||
Simplifies the polygon according to \ccc{cost} and \ccc{stop}, which
|
||||
must be models of the concepts \ccc{PolylineSimplificationStopPredicate}
|
||||
and \ccc{PolylineSimplificationCostFunction}.
|
||||
}
|
||||
|
||||
\ccGlobalFunction{template <class Tr, class CostFunction, class StopFunction>
|
||||
std::size_t
|
||||
simplify(CGAL::Polyline_constrained_triangulation_2<Tr>& pct,
|
||||
CGAL::Polyline_constrained_triangulation_2<Tr>::Constraint_id cid,
|
||||
CostFunction cost,
|
||||
StopFunction stop,
|
||||
bool keep_points = false);}
|
||||
{
|
||||
Simplifies polyline constraint \ccc{cid} in \ccc{pct} according to \ccc{cost} and \ccc{stop}, which
|
||||
must be models of the concepts \ccc{PolylineSimplificationStopPredicate}
|
||||
and \ccc{PolylineSimplificationCostFunction}. If \ccc{keep_points} is \ccc{true}
|
||||
only the vertices but not the points are removed.
|
||||
}
|
||||
|
||||
|
||||
\ccGlobalFunction{template <class Tr, class CostFunction, class StopFunction>
|
||||
std::size_t
|
||||
simplify(CGAL::Polyline_constrained_triangulation_2<Tr>& pct,
|
||||
CostFunction cost,
|
||||
StopFunction stop,
|
||||
bool keep_points = false);}
|
||||
{
|
||||
Simplifies \ccc{pct} according to \ccc{cost} and \ccc{stop}, which
|
||||
must be models of the concepts \ccc{PolylineSimplificationStopPredicate}
|
||||
and \ccc{PolylineSimplificationCostFunction}. If \ccc{keep_points} is \ccc{true}
|
||||
only the vertices but not the points are removed.
|
||||
}
|
||||
|
||||
\ccSeeAlso
|
||||
|
||||
\ccc{Polyline_simplification_2::mark_vertices_unremovable}
|
||||
\end{ccRefFunction}
|
||||
|
||||
\ccRefPageEnd
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
// Recommended kernel
|
||||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||
|
||||
// The simplification data structure
|
||||
#include <CGAL/Polyline_simplification_2.h>
|
||||
|
||||
// Stop predicate
|
||||
#include <CGAL/Polyline_simplification_2/Stop_below_count_ratio_threshold.h>
|
||||
|
||||
// Cost function
|
||||
#include <CGAL/Polyline_simplification_2/Scaled_squared_distance_cost.h>
|
||||
|
||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||
|
||||
typedef K::Point_2 Point ;
|
||||
|
||||
typedef CGAL::Simplify_polylines_2<K> PS;
|
||||
|
||||
int main( int argc, char** argv )
|
||||
{
|
||||
PS ps ;
|
||||
|
||||
Point points[] = { Point(0,1)
|
||||
, Point(1,2)
|
||||
, Point(2,1)
|
||||
, Point(3,3)
|
||||
, Point(4,1)
|
||||
, Point(5,4)
|
||||
, Point(6,1)
|
||||
, Point(3,0)
|
||||
} ;
|
||||
|
||||
// Insert polygon into simplification class
|
||||
PS::Closed_polyline_handle poly = ps.insert_polygon(points,points+8);
|
||||
|
||||
std::cout << "Before simplification" << std::endl ;
|
||||
std::cout << std::endl ;
|
||||
|
||||
// Iterate over the vertices of the inserted polygon before simplification
|
||||
PS::Closed_polyline::Circulator head = poly->circulator();
|
||||
PS::Closed_polyline::Circulator cit = head;
|
||||
|
||||
do
|
||||
{
|
||||
std::cout << cit->point() << std::endl ;
|
||||
}
|
||||
while ( ++ cit != head ) ;
|
||||
|
||||
// Define the stop predicate to finish when the number of vertices drops
|
||||
// below half the initial amount
|
||||
CGAL::Polyline_simplification_2::Stop_below_count_ratio_threshold stop(0.5);
|
||||
|
||||
// Use the scaled squared distance cost function
|
||||
CGAL::Polyline_simplification_2::Scaled_squared_distance_cost<double> cost;
|
||||
|
||||
// Proceed with the simplification
|
||||
ps.simplify(stop, cost) ;
|
||||
|
||||
// Continue with the simplification from the previously simplified set
|
||||
ps.simplify(stop, cost) ;
|
||||
|
||||
// And again...
|
||||
ps.simplify(stop, cost) ;
|
||||
|
||||
std::cout << "After simplification" << std::endl ;
|
||||
std::cout << std::endl ;
|
||||
|
||||
// Iterate over the now simplified polyline showing the remaning vertices
|
||||
head = poly->circulator();
|
||||
cit = head;
|
||||
do
|
||||
{
|
||||
std::cout << cit->point() << std::endl ;
|
||||
}
|
||||
while ( ++ cit != head ) ;
|
||||
|
||||
return 0 ;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,92 @@
|
|||
// Recommended kernel
|
||||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||
|
||||
// The simplification data structure
|
||||
#include <CGAL/Polyline_simplification_2.h>
|
||||
|
||||
// Stop predicate
|
||||
#include <CGAL/Polyline_simplification_2/Stop_below_count_ratio_threshold.h>
|
||||
|
||||
// Cost functions
|
||||
#include <CGAL/Polyline_simplification_2/Scaled_squared_distance_cost.h>
|
||||
#include <CGAL/Polyline_simplification_2/Squared_distance_cost.h>
|
||||
|
||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||
|
||||
typedef K::Point_2 Point ;
|
||||
|
||||
typedef CGAL::Simplify_polylines_2<K> PS;
|
||||
|
||||
int main( int argc, char** argv )
|
||||
{
|
||||
PS ps ;
|
||||
|
||||
Point points[] = { Point(0,1)
|
||||
, Point(1,2)
|
||||
, Point(2,1)
|
||||
, Point(3,3)
|
||||
, Point(4,1)
|
||||
, Point(5,4)
|
||||
, Point(6,1)
|
||||
, Point(3,0)
|
||||
} ;
|
||||
|
||||
// Insert polygon into simplification class
|
||||
PS::Closed_polyline_handle poly = ps.insert_polygon(points,points+8);
|
||||
|
||||
std::cout << "Before simplification" << std::endl ;
|
||||
std::cout << std::endl ;
|
||||
|
||||
// Iterate over the vertices of the inserted polygon before simplification
|
||||
PS::Closed_polyline::Circulator head = poly->circulator();
|
||||
PS::Closed_polyline::Circulator cit = head;
|
||||
|
||||
do
|
||||
{
|
||||
std::cout << cit->point() << std::endl ;
|
||||
}
|
||||
while ( ++ cit != head ) ;
|
||||
|
||||
// Define the stop predicate to finish when the number of vertices drops
|
||||
// below half the initial amount
|
||||
CGAL::Polyline_simplification_2::Stop_below_count_ratio_threshold stop(0.5);
|
||||
|
||||
CGAL::Polyline_simplification_2::Scaled_squared_distance_cost<double> cost1;
|
||||
CGAL::Polyline_simplification_2::Squared_distance_cost<double> cost2;
|
||||
|
||||
// Proceed with the simplification
|
||||
ps.simplify(stop, cost1) ;
|
||||
|
||||
std::cout << "Using the scaled squared distance" << std::endl ;
|
||||
std::cout << std::endl ;
|
||||
|
||||
// Iterate over the now simplified polyline showing the remaining vertices
|
||||
head = poly->circulator();
|
||||
cit = head;
|
||||
|
||||
do
|
||||
{
|
||||
std::cout << cit->point() << std::endl ;
|
||||
}
|
||||
while ( ++ cit != head ) ;
|
||||
|
||||
// Start again but using the other cost function
|
||||
ps.simplify_original(stop, cost2) ;
|
||||
|
||||
std::cout << "Using the absolute squared distance" << std::endl ;
|
||||
std::cout << std::endl ;
|
||||
|
||||
// Iterate over the now simplified polyline showing the remaning vertices
|
||||
head = poly->circulator();
|
||||
cit = head;
|
||||
|
||||
do
|
||||
{
|
||||
std::cout << cit->point() << std::endl ;
|
||||
}
|
||||
while ( ++ cit != head ) ;
|
||||
|
||||
return 0 ;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
// Recommended kernel
|
||||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||
|
||||
// The simplification data structure
|
||||
#include <CGAL/Polyline_simplification_2.h>
|
||||
|
||||
// Stop predicate
|
||||
#include <CGAL/Polyline_simplification_2/Stop_below_count_ratio_threshold.h>
|
||||
|
||||
// Cost function
|
||||
#include <CGAL/Polyline_simplification_2/Scaled_squared_distance_cost.h>
|
||||
|
||||
// Helper visitor base
|
||||
#include <CGAL/Polyline_simplification_2/Visitor_base.h>
|
||||
|
||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||
|
||||
typedef K::Point_2 Point ;
|
||||
|
||||
typedef CGAL::Simplify_polylines_2<K> PS;
|
||||
|
||||
// Create a custom visitor using the helper base class and overriding only one function
|
||||
struct My_visitor : CGAL::Polyline_simplification_2::Visitor_base<PS>
|
||||
{
|
||||
void OnSelected( Vertex_handle const& v, boost::optional<FT> const& cost, unsigned icount , unsigned ccount ) const
|
||||
{
|
||||
std::cout << "step [" << ccount << "/" << icount << "]: " << "V" << v->id() << " with cost " << cost << " selected" << std::endl ;
|
||||
}
|
||||
|
||||
} ;
|
||||
|
||||
int main( int argc, char** argv )
|
||||
{
|
||||
PS ps ;
|
||||
|
||||
Point points[] = { Point(0,1)
|
||||
, Point(1,2)
|
||||
, Point(2,1)
|
||||
, Point(3,3)
|
||||
, Point(4,1)
|
||||
, Point(5,4)
|
||||
, Point(6,1)
|
||||
, Point(3,0)
|
||||
} ;
|
||||
|
||||
// Insert polygon into simplification class
|
||||
PS::Closed_polyline_handle poly = ps.insert_polygon(points,points+8);
|
||||
|
||||
std::cout << "Before simplification" << std::endl ;
|
||||
std::cout << std::endl ;
|
||||
|
||||
// Iterate over the vertices of the inserted polygon before simplification
|
||||
PS::Closed_polyline::Circulator head = poly->circulator();
|
||||
PS::Closed_polyline::Circulator cit = head;
|
||||
|
||||
do
|
||||
{
|
||||
std::cout << cit->point() << std::endl ;
|
||||
}
|
||||
while ( ++ cit != head ) ;
|
||||
|
||||
// Define the stop predicate to finish when the number of vertices drops
|
||||
// below half the initial amount
|
||||
CGAL::Polyline_simplification_2::Stop_below_count_ratio_threshold stop(0.5);
|
||||
|
||||
// Use the scaled squared distance cost function
|
||||
CGAL::Polyline_simplification_2::Scaled_squared_distance_cost<double> cost;
|
||||
|
||||
// Proceed with the simplification tracking the process
|
||||
My_visitor visitor ;
|
||||
|
||||
ps.simplify(stop, cost, visitor) ;
|
||||
|
||||
return 0 ;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||
#include <CGAL/Polygon_2.h>
|
||||
#include <CGAL/Constrained_Delaunay_triangulation_2.h>
|
||||
#include <CGAL/Polyline_constrained_triangulation_2.h>
|
||||
#include <CGAL/Polyline_simplification_2/simplify.h>
|
||||
|
||||
namespace PS = CGAL::Polyline_simplification_2;
|
||||
|
||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||
typedef CGAL::Polygon_2<K> Polygon_2;
|
||||
typedef CGAL::Exact_predicates_tag Itag;
|
||||
typedef CGAL::Constrained_Delaunay_triangulation_2<K,CGAL::Default, Itag> CDT;
|
||||
typedef CGAL::Polyline_constrained_triangulation_2<CDT> PCT;
|
||||
typedef PCT::Point Point;
|
||||
typedef PCT::Constraint_id Constraint_id;
|
||||
typedef PCT::Constraint_iterator Constraint_iterator;
|
||||
typedef PCT::Vertices_in_constraint_iterator Vertices_in_constraint_iterator;
|
||||
typedef PCT::Points_in_constraint_iterator Points_in_constraint_iterator;
|
||||
typedef PS::Stop_below_count_ratio_threshold Stop;
|
||||
typedef PS::Squared_distance_cost Cost;
|
||||
|
||||
void print(const PCT& pct, Constraint_id cid)
|
||||
{
|
||||
std::cout << "simplified polyline" <<std::endl;
|
||||
for(Vertices_in_constraint_iterator vit =
|
||||
pct.vertices_in_constraint_begin(cid);
|
||||
vit != pct.vertices_in_constraint_end(cid);
|
||||
++vit){
|
||||
std::cout << vit->point() << std::endl ;
|
||||
}
|
||||
|
||||
std::cout << "original points" <<std::endl;
|
||||
for(Points_in_constraint_iterator pit =
|
||||
pct.vertices_in_constraint_begin(cid);
|
||||
pit != pct.vertices_in_constraint_end(cid);
|
||||
++pit){
|
||||
std::cout << *pit << std::endl ;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
int main( )
|
||||
{
|
||||
const bool keep_points = true;
|
||||
PCT pct;
|
||||
Polygon_2 P;
|
||||
Constraint_id cid;
|
||||
int largest = 0;
|
||||
while(std::cin >> P){
|
||||
Constraint_id cid2 = pct.insert_constraint(P);
|
||||
if(P.size() > largest){
|
||||
cid = cid2;
|
||||
}
|
||||
}
|
||||
|
||||
PS::mark_vertices_unremovable(pct,cid);
|
||||
PS::simplify(pct, cid, Cost(), Stop(0.5), keep_points);
|
||||
print(pct, cid);
|
||||
PS::simplify(pct, cid, Cost(), Stop(0.5), keep_points);
|
||||
pct.remove_points_from_constraint(cid);
|
||||
print(pct, cid);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||
#include <CGAL/Polygon_2.h>
|
||||
#include <CGAL/Constrained_Delaunay_triangulation_2.h>
|
||||
#include <CGAL/Polyline_constrained_triangulation_2.h>
|
||||
#include <CGAL/Polyline_simplification_2/simplify.h>
|
||||
|
||||
namespace PS = CGAL::Polyline_simplification_2;
|
||||
|
||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||
typedef CGAL::Polygon_2<K> Polygon_2;
|
||||
typedef CGAL::Constrained_Delaunay_triangulation_2<K,CGAL::Default, CGAL::Exact_predicates_tag> CDT;
|
||||
typedef CGAL::Polyline_constrained_triangulation_2<CDT> PCT;
|
||||
typedef PCT::Point Point;
|
||||
typedef PCT::Constraint_iterator Constraint_iterator;
|
||||
typedef PCT::Vertices_in_constraint_iterator Vertices_in_constraint_iterator;
|
||||
typedef PCT::Points_in_constraint_iterator Points_in_constraint_iterator;
|
||||
typedef PS::Stop_below_count_ratio_threshold Stop;
|
||||
typedef PS::Squared_distance_cost<double> Cost;
|
||||
|
||||
int main( )
|
||||
{
|
||||
PCT pct;
|
||||
Polygon_2 P;
|
||||
while(std::cin >> P){
|
||||
pct.insert_constraint(P);
|
||||
}
|
||||
PS::mark_vertices_unremovable(pct);
|
||||
PS::simplify(pct, Cost(), Stop(0.5));
|
||||
|
||||
for(Constraint_iterator cit = pct.constraints_begin();
|
||||
cit != pct.constraints.end();
|
||||
++cit){
|
||||
std::cout << "simplified polyline" << std::endl;
|
||||
for(Vertices_in_constraint_iterator vit =
|
||||
pct.vertices_in_constraint_begin(*cit);
|
||||
vit != pct.vertices_in_constraint_end(*cit);
|
||||
++vit)
|
||||
std::cout << (*vit)->point() << std::endl ;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
#include <iostream>
|
||||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||
#include <CGAL/Polygon_2.h>
|
||||
#include <CGAL/Polyline_simplification_2/simplify.h>
|
||||
|
||||
namespace PS = CGAL::Polyline_simplification_2;
|
||||
|
||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||
typedef CGAL::Polygon_2<K> Polygon_2;
|
||||
typedef PS::Stop_below_count_ratio_threshold Stop;
|
||||
typedef PS::Squared_distance_cost Cost;
|
||||
|
||||
int main( )
|
||||
{
|
||||
Polygon_2 polygon;
|
||||
std::cin >> polygon;
|
||||
|
||||
polygon = PS::simplify(polygon, Cost(), Stop(0.5));
|
||||
|
||||
std::cout.precision(12);
|
||||
std::cout << polygon << std::endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,105 @@
|
|||
// Copyright (c) 2012 Geometry Factory. All rights reserved.
|
||||
// All rights reserved.
|
||||
//
|
||||
// This file is part of CGAL (www.cgal.org).
|
||||
// You can redistribute it and/or modify it under the terms of the GNU
|
||||
// General Public License as published by the Free Software Foundation,
|
||||
// either version 3 of the License, or (at your option) any later version.
|
||||
//
|
||||
// Licensees holding a valid commercial license may use this file in
|
||||
// accordance with the commercial license agreement provided with the software.
|
||||
//
|
||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// $URL$
|
||||
// $Id$
|
||||
//
|
||||
// Author(s) : Andreas Fabri, Fernando Cacciola
|
||||
//
|
||||
#ifndef CGAL_POLYLINE_SIMPLIFICATION_2_HYBRID_SQUARED_DISTANCE_COST_H
|
||||
#define CGAL_POLYLINE_SIMPLIFICATION_2_HYBRID_SQUARED_DISTANCE_COST_H
|
||||
|
||||
|
||||
namespace CGAL {
|
||||
|
||||
namespace Polyline_simplification_2
|
||||
{
|
||||
|
||||
/// This class is a cost function which calculates the cost as the square of the distance between the original and simplified polylines,
|
||||
/// possibly scaled based on a factor.
|
||||
///
|
||||
/// @heading Is Model for the Concepts: 'PolylineSimplificationCostFunction'.
|
||||
template<class FT>
|
||||
class Hybrid_squared_distance_cost
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
/// Initializes the cost function with the specified "ratio"
|
||||
Hybrid_squared_distance_cost( FT ratio ) : mSquaredRatio(ratio*ratio) {}
|
||||
|
||||
/// Returns the maximal square distances between each point along the original subpolyline,
|
||||
/// given by the range [original_subpolyline_vertices_begin,original_subpolyline_vertices_end),
|
||||
/// and the straight line segment "p->r" divided by the smallest of
|
||||
/// - the square of the ratio given to the constructor of the cost function,
|
||||
/// - and the shortest squared distance between that segment and each of the vertices adjacent to "q".
|
||||
template<class PolylineConstraintTriangulation, class CVI>
|
||||
boost::optional<typename PolylineConstraintTriangulation::Geom_traits::FT>
|
||||
operator()( PolylineConstraintTriangulation const& pct
|
||||
, CVI p
|
||||
, CVI q
|
||||
, CVI r) const
|
||||
{
|
||||
typedef typename PolylineConstraintTriangulation::Vertex_handle Vertex_handle;
|
||||
typedef typename PolylineConstraintTriangulation::Vertex_circulator Vertex_circulator;
|
||||
typedef typename PolylineConstraintTriangulation::Geom_traits Geom_traits ;
|
||||
typedef Geom_traits::FT FT;
|
||||
typedef typename Geom_traits::Compute_squared_distance_2 Compute_squared_distance;
|
||||
typedef typename Geom_traits::Construct_segment_2 Construct_segment;
|
||||
typedef typename Geom_traits::Segment_2 Segment;
|
||||
typedef typename Geom_traits::Point_2 Point;
|
||||
|
||||
Compute_squared_distance compute_squared_distance = pct.geom_traits().compute_squared_distance_2_object() ;
|
||||
Construct_segment construct_segment = pct.geom_traits().construct_segment_2_object() ;
|
||||
|
||||
Point const& lP = p->point;
|
||||
Point const& lQ = q->point;
|
||||
Point const& lR = r->point;
|
||||
|
||||
Segment lP_R = construct_segment(lP, lR) ;
|
||||
|
||||
FT d1 = 0.0;
|
||||
++p;
|
||||
|
||||
for ( ;p != r; ++p )
|
||||
d1 = (std::max)(d1, compute_squared_distance( lP_R, p->point ) ) ;
|
||||
|
||||
FT d2 = (std::numeric_limits<double>::max)() ;
|
||||
|
||||
Vertex_circulator vc = q->vertex->incident_vertices(), done(vc);
|
||||
do {
|
||||
if((vc != pct.infinite_vertex()) && (vc != p->vertex) && (vc != r->vertex)){
|
||||
d2 = (std::min)(d2, compute_squared_distance(vc->point(), q->point));
|
||||
}
|
||||
++vc;
|
||||
}while(vc != done);
|
||||
|
||||
return d1 / (std::min)(d2, mSquaredRatio) ;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
FT mSquaredRatio ;
|
||||
|
||||
};
|
||||
|
||||
|
||||
} // namespace Polyline_simplification_2
|
||||
|
||||
|
||||
} //namespace CGAL
|
||||
|
||||
#endif // CGAL_POLYLINE_SIMPLIFICATION_2_HYBRID_SQUARED_DISTANCE_COST_H
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
// Copyright (c) 2012 Geometry Factory. All rights reserved.
|
||||
// All rights reserved.
|
||||
//
|
||||
// This file is part of CGAL (www.cgal.org).
|
||||
// You can redistribute it and/or modify it under the terms of the GNU
|
||||
// General Public License as published by the Free Software Foundation,
|
||||
// either version 3 of the License, or (at your option) any later version.
|
||||
//
|
||||
// Licensees holding a valid commercial license may use this file in
|
||||
// accordance with the commercial license agreement provided with the software.
|
||||
//
|
||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// $URL$
|
||||
// $Id$
|
||||
//
|
||||
// Author(s) : Andreas Fabri, Fernando Cacciola
|
||||
//
|
||||
#ifndef CGAL_POLYLINE_SIMPLIFICATION_2_SCALED_SQUARED_DISTANCE_COST_H
|
||||
#define CGAL_POLYLINE_SIMPLIFICATION_2_SCALED_SQUARED_DISTANCE_COST_H
|
||||
|
||||
|
||||
namespace CGAL {
|
||||
|
||||
namespace Polyline_simplification_2
|
||||
{
|
||||
|
||||
/// This class is a cost function which calculates the cost as a scaled variant of the square of the distance between the original and simplified polylines.
|
||||
///
|
||||
/// @heading Is Model for the Concepts: PolylineSimplificationCostFunction
|
||||
class Scaled_squared_distance_cost
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
/// Initializes the cost function
|
||||
Scaled_squared_distance_cost() {}
|
||||
|
||||
/// Returns the maximal square distances between each point along the original subpolyline,
|
||||
/// given by the range [original_subpolyline_vertices_begin,original_subpolyline_vertices_end),
|
||||
/// and the straight line segment "p->r" divided by the shortest squared distance between
|
||||
/// that segment and each of the vertices adjacent to "q".
|
||||
template<class PolylineConstraintTriangulation, class CVI>
|
||||
boost::optional<typename PolylineConstraintTriangulation::Geom_traits::FT>
|
||||
operator()( PolylineConstraintTriangulation const& pct
|
||||
, CVI p
|
||||
, CVI q
|
||||
, CVI r) const
|
||||
{
|
||||
typedef typename PolylineConstraintTriangulation::Vertex_handle Vertex_handle;
|
||||
typedef typename PolylineConstraintTriangulation::Vertex_circulator Vertex_circulator;
|
||||
typedef typename PolylineConstraintTriangulation::Geom_traits Geom_traits ;
|
||||
typedef Geom_traits::FT FT;
|
||||
typedef typename Geom_traits::Compute_squared_distance_2 Compute_squared_distance;
|
||||
typedef typename Geom_traits::Construct_segment_2 Construct_segment;
|
||||
typedef typename Geom_traits::Segment_2 Segment;
|
||||
typedef typename Geom_traits::Point_2 Point;
|
||||
|
||||
Compute_squared_distance compute_squared_distance = pct.geom_traits().compute_squared_distance_2_object() ;
|
||||
Construct_segment construct_segment = pct.geom_traits().construct_segment_2_object() ;
|
||||
|
||||
Point const& lP = p->point;
|
||||
Point const& lR = r->point;
|
||||
|
||||
Segment lP_R = construct_segment(lP, lR) ;
|
||||
|
||||
FT d1 = 0.0;
|
||||
++p;
|
||||
|
||||
for ( ;p != r; ++p )
|
||||
d1 = (std::max)(d1, compute_squared_distance( lP_R, p->point ) ) ;
|
||||
|
||||
double d2 = (std::numeric_limits<double>::max)() ;
|
||||
|
||||
Vertex_circulator vc = q->vertex->incident_vertices(), done(vc);
|
||||
do {
|
||||
if((vc != pct.infinite_vertex()) && (vc != p->vertex) && (vc != r->vertex)){
|
||||
d2 = (std::min)(d2, compute_squared_distance(vc->point(), q->point));
|
||||
}
|
||||
++vc;
|
||||
}while(vc != done);
|
||||
|
||||
return d1 / d2 ;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
} // namespace Polyline_simplification_2
|
||||
|
||||
|
||||
} //namespace CGAL
|
||||
|
||||
#endif // CGAL_POLYLINE_SIMPLIFICATION_2_SCALED_SQUARED_DISTANCE_COST_H
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
// Copyright (c) 2012 Geometry Factory. All rights reserved.
|
||||
// All rights reserved.
|
||||
//
|
||||
// This file is part of CGAL (www.cgal.org).
|
||||
// You can redistribute it and/or modify it under the terms of the GNU
|
||||
// General Public License as published by the Free Software Foundation,
|
||||
// either version 3 of the License, or (at your option) any later version.
|
||||
//
|
||||
// Licensees holding a valid commercial license may use this file in
|
||||
// accordance with the commercial license agreement provided with the software.
|
||||
//
|
||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// $URL$
|
||||
// $Id$
|
||||
//
|
||||
// Author(s) : Andreas Fabri, Fernando Cacciola
|
||||
//
|
||||
#ifndef CGAL_POLYLINE_SIMPLIFICATION_2_SQUARED_DISTANCE_COST_H
|
||||
#define CGAL_POLYLINE_SIMPLIFICATION_2_SQUARED_DISTANCE_COST_H
|
||||
|
||||
|
||||
namespace CGAL {
|
||||
|
||||
namespace Polyline_simplification_2
|
||||
{
|
||||
|
||||
/// This class is a cost function which calculates the cost as the square of the distance between the original and simplified polylines.
|
||||
///
|
||||
/// @heading Is Model for the Concepts: 'PolylineSimplificationCostFunction'.
|
||||
class Squared_distance_cost
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
/// Initializes the cost function
|
||||
Squared_distance_cost() {}
|
||||
|
||||
/// Returns the maximal square distances between each point along the original subpolyline,
|
||||
/// given by the range [original_subpolyline_vertices_begin,original_subpolyline_vertices_end),
|
||||
/// and the straight line segment "p->r".
|
||||
|
||||
template<class PolylineConstraintTriangulation, class CVI>
|
||||
boost::optional<typename PolylineConstraintTriangulation::Geom_traits::FT>
|
||||
operator()( PolylineConstraintTriangulation const& pct
|
||||
, CVI p
|
||||
, CVI q
|
||||
, CVI r) const
|
||||
{
|
||||
|
||||
typedef typename PolylineConstraintTriangulation::Geom_traits Geom_traits ;
|
||||
typedef Geom_traits::FT FT;
|
||||
typedef typename Geom_traits::Compute_squared_distance_2 Compute_squared_distance ;
|
||||
typedef typename Geom_traits::Construct_segment_2 Construct_segment ;
|
||||
typedef typename Geom_traits::Segment_2 Segment ;
|
||||
typedef typename Geom_traits::Point_2 Point ;
|
||||
|
||||
Compute_squared_distance compute_squared_distance = pct.geom_traits().compute_squared_distance_2_object() ;
|
||||
Construct_segment construct_segment = pct.geom_traits().construct_segment_2_object() ;
|
||||
|
||||
Point const& lP = p->point;
|
||||
Point const& lR = r->point;
|
||||
|
||||
Segment lP_R = construct_segment(lP, lR) ;
|
||||
|
||||
FT d1 = 0.0;
|
||||
++p;
|
||||
|
||||
for ( ;p != r; ++p )
|
||||
d1 = (std::max)(d1, compute_squared_distance( lP_R, p->point ) ) ;
|
||||
|
||||
return d1 ;
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
} // namespace Polyline_simplification_2
|
||||
|
||||
|
||||
} //namespace CGAL
|
||||
|
||||
#endif // CGAL_POLYLINE_SIMPLIFICATION_2_SQUARED_DISTANCE_COST_H
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
// Copyright (c) 2012 Geometry Factory. All rights reserved.
|
||||
// All rights reserved.
|
||||
//
|
||||
// This file is part of CGAL (www.cgal.org).
|
||||
// You can redistribute it and/or modify it under the terms of the GNU
|
||||
// General Public License as published by the Free Software Foundation,
|
||||
// either version 3 of the License, or (at your option) any later version.
|
||||
//
|
||||
// Licensees holding a valid commercial license may use this file in
|
||||
// accordance with the commercial license agreement provided with the software.
|
||||
//
|
||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// $URL$
|
||||
// $Id$
|
||||
//
|
||||
// Author(s) : Andreas Fabri, Fernando Cacciola
|
||||
//
|
||||
#ifndef CGAL_POLYLINE_SIMPLIFICATION_2_STOP_ABOVE_COST_THRESHOLD_H
|
||||
#define CGAL_POLYLINE_SIMPLIFICATION_2_STOP_ABOVE_COST_THRESHOLD_H
|
||||
|
||||
|
||||
namespace CGAL {
|
||||
|
||||
namespace Polyline_simplification_2
|
||||
{
|
||||
|
||||
/// This class is a stop predicate returning the cost for simplifying a vertex is smaller than a certain threshold.
|
||||
///
|
||||
/// @heading Is Model for the Concepts: PolylineSimplificationStopPredicate.
|
||||
class Stop_above_cost_threshold
|
||||
{
|
||||
public :
|
||||
|
||||
/// Initializes it with the given threshold value
|
||||
Stop_above_cost_threshold( double aThreshold ) : mThres(aThreshold) {}
|
||||
|
||||
/// Returns true when "cost" is smaller or equal than the threshold
|
||||
template<class ConstrainedDelaunayTriangulation, class VertexHandle>
|
||||
bool operator()( ConstrainedDelaunayTriangulation const& cdt
|
||||
, VertexHandle const& p
|
||||
, double cost
|
||||
, std::size_t initial_count
|
||||
, std::size_t current_count
|
||||
) const
|
||||
{
|
||||
return cost >= mThres ;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
double mThres ;
|
||||
};
|
||||
|
||||
} // namespace Polyline_simplification_2
|
||||
|
||||
} //namespace CGAL
|
||||
|
||||
#endif // CGAL_POLYLINE_SIMPLIFICATION_2_STOP_ABOVE_COST_THRESHOLD_H
|
||||
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
// Copyright (c) 2012 Geometry Factory. All rights reserved.
|
||||
// All rights reserved.
|
||||
//
|
||||
// This file is part of CGAL (www.cgal.org).
|
||||
// You can redistribute it and/or modify it under the terms of the GNU
|
||||
// General Public License as published by the Free Software Foundation,
|
||||
// either version 3 of the License, or (at your option) any later version.
|
||||
//
|
||||
// Licensees holding a valid commercial license may use this file in
|
||||
// accordance with the commercial license agreement provided with the software.
|
||||
//
|
||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// $URL$
|
||||
// $Id$
|
||||
//
|
||||
// Author(s) : Andreas Fabri, Fernando Cacciola
|
||||
//
|
||||
#ifndef CGAL_POLYLINE_SIMPLIFICATION_2_STOP_BELOW_COUNT_RATIO_THRESHOLD_H
|
||||
#define CGAL_POLYLINE_SIMPLIFICATION_2_STOP_BELOW_COUNT_RATIO_THRESHOLD_H
|
||||
|
||||
|
||||
namespace CGAL {
|
||||
|
||||
namespace Polyline_simplification_2
|
||||
{
|
||||
|
||||
/// This class is a stop predicate returning true when the percentage of remaning vertices is smaller than a certain threshold.
|
||||
///
|
||||
/// @heading Is Model for the Concepts: 'PolylineSimplificationStopPredicate'.
|
||||
class Stop_below_count_ratio_threshold
|
||||
{
|
||||
public :
|
||||
|
||||
/// Initializes it with the given threshold value
|
||||
Stop_below_count_ratio_threshold( double threshold ) : mThres(threshold) {}
|
||||
|
||||
/// Returns true when "( current_count / initial_count )" is smaller or equal than the threshold
|
||||
template<class ConstrainedDelaunayTriangulation, class VertexHandle>
|
||||
bool operator()( ConstrainedDelaunayTriangulation const&
|
||||
, VertexHandle const&
|
||||
, double
|
||||
, std::size_t initial_count
|
||||
, std::size_t current_count
|
||||
) const
|
||||
{
|
||||
return ( (double)current_count / (double)initial_count ) <= mThres ;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
double mThres ;
|
||||
};
|
||||
|
||||
} // namespace Polyline_simplification_2
|
||||
|
||||
} //namespace CGAL
|
||||
|
||||
#endif // CGAL_POLYLINE_SIMPLIFICATION_2_STOP_BELOW_COUNT_RATIO_THRESHOLD_H
|
||||
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
// Copyright (c) 2012 Geometry Factory. All rights reserved.
|
||||
// All rights reserved.
|
||||
//
|
||||
// This file is part of CGAL (www.cgal.org).
|
||||
// You can redistribute it and/or modify it under the terms of the GNU
|
||||
// General Public License as published by the Free Software Foundation,
|
||||
// either version 3 of the License, or (at your option) any later version.
|
||||
//
|
||||
// Licensees holding a valid commercial license may use this file in
|
||||
// accordance with the commercial license agreement provided with the software.
|
||||
//
|
||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// $URL$
|
||||
// $Id$
|
||||
//
|
||||
// Author(s) : Andreas Fabri, Fernando Cacciola
|
||||
//
|
||||
#ifndef CGAL_POLYLINE_SIMPLIFICATION_2_STOP_BELOW_COUNT_THRESHOLD_H
|
||||
#define CGAL_POLYLINE_SIMPLIFICATION_2_STOP_BELOW_COUNT_THRESHOLD_H
|
||||
|
||||
namespace CGAL {
|
||||
|
||||
namespace Polyline_simplification_2
|
||||
{
|
||||
|
||||
/// This class is a stop predicate returning the number of vertices is smaller than a certain threshold.
|
||||
///
|
||||
/// @heading Is Model for the Concepts: 'PolylineSimplificationStopPredicate'.
|
||||
class Stop_below_count_threshold
|
||||
{
|
||||
public :
|
||||
|
||||
/// Initializes it with the given threshold value
|
||||
Stop_below_count_threshold( std::size_t threshold ) : mThres(threshold) {}
|
||||
|
||||
/// Returns true when "current_count" is smaller or equal than the threshold
|
||||
template<class ConstrainedDelaunayTriangulation, class VertexHandle>
|
||||
bool operator()( ConstrainedDelaunayTriangulation const& cdt
|
||||
, VertexHandle const& p
|
||||
, double cost
|
||||
, std::size_t initial_count
|
||||
, std::size_t current_count
|
||||
) const
|
||||
{
|
||||
return current_count <= mThres ;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
std::size_t mThres ;
|
||||
};
|
||||
|
||||
} // namespace Polyline_simplification_2
|
||||
|
||||
} //namespace CGAL
|
||||
|
||||
#endif // CGAL_POLYLINE_SIMPLIFICATION_2_STOP_BELOW_COUNT_THRESHOLD_H
|
||||
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
// Copyright (c) 2012 Geometry Factory. All rights reserved.
|
||||
// All rights reserved.
|
||||
//
|
||||
// This file is part of CGAL (www.cgal.org).
|
||||
// You can redistribute it and/or modify it under the terms of the GNU
|
||||
// General Public License as published by the Free Software Foundation,
|
||||
// either version 3 of the License, or (at your option) any later version.
|
||||
//
|
||||
// Licensees holding a valid commercial license may use this file in
|
||||
// accordance with the commercial license agreement provided with the software.
|
||||
//
|
||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// $URL$
|
||||
// $Id$
|
||||
//
|
||||
// Author(s) : Andreas Fabri
|
||||
//
|
||||
#ifndef CGAL_POLYLINE_SIMPLIFICATION_2_MARK_VERTICES_UNREMOVBLE_H
|
||||
#define CGAL_POLYLINE_SIMPLIFICATION_2_MARK_VERTICES_UNREMOVBLE_H
|
||||
|
||||
namespace CGAL {
|
||||
|
||||
template < class Tr >
|
||||
class Polyline_constrained_triangulation_2;
|
||||
|
||||
namespace Polyline_simplification_2 {
|
||||
|
||||
// Fix the leftmost, rightmost, topmost and bottommost vertex
|
||||
template <typename Tr>
|
||||
void
|
||||
mark_vertices_unremovable(CGAL::Polyline_constrained_triangulation_2<Tr>& pct,
|
||||
typename CGAL::Polyline_constrained_triangulation_2<Tr>::Constraint_id cid)
|
||||
{
|
||||
typedef typename CGAL::Polyline_constrained_triangulation_2<Tr> PCT;
|
||||
typedef PCT::Vertices_in_constraint_iterator Vertices_in_constraint_iterator;
|
||||
Vertices_in_constraint_iterator l,r,b,t;
|
||||
l = r = b = t = pct.vertices_in_constraint_begin(cid);
|
||||
for(Vertices_in_constraint_iterator it = pct.vertices_in_constraint_begin(cid);
|
||||
it != pct.vertices_in_constraint_end(cid);
|
||||
it++){
|
||||
if(it->point.x() < l->point.x()) l = it;
|
||||
if(it->point.x() > r->point.x()) r = it;
|
||||
if(it->point.y() < b->point.y()) b = it;
|
||||
if(it->point.y() > t->point.y()) t = it;
|
||||
}
|
||||
l->fixed = r->fixed = t->fixed = b->fixed = true;
|
||||
}
|
||||
|
||||
|
||||
// Fix the leftmost, rightmost, topmost and bottommost vertex
|
||||
template <typename Tr>
|
||||
void
|
||||
mark_vertices_unremovable(CGAL::Polyline_constrained_triangulation_2<Tr>& pct)
|
||||
{
|
||||
typedef typename CGAL::Polyline_constrained_triangulation_2<Tr> PCT;
|
||||
typedef typename PCT::Constraint_iterator Constraint_iterator;
|
||||
typedef typename PCT::Constraint_id Constraint_id;
|
||||
|
||||
Constraint_iterator cit = pct.constraints_begin(), e = pct.constraints_end();
|
||||
for(; cit!=e; ++cit){
|
||||
Constraint_id cid = *cit;
|
||||
mark_vertices_unremovable(pct,cid);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace polyline_simplification_2
|
||||
} // namespace CGAL
|
||||
#endif CGAL_POLYLINE_SIMPLIFICATION_2_MARK_VERTICES_UNREMOVBLE_h
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
/// Models of this concept are passed to the polyline simplification algorithm to calculate
|
||||
/// the "cost" of removing a vertex. Such a cost represents some measure of the deviation error between the
|
||||
/// polyline sets before and after removal. The smaller the error the lower the cost. The algoritm processes
|
||||
/// vertices in increasing cost order to preserve the overall polyline set shape as much as possible
|
||||
///
|
||||
/// @heading Has Models:
|
||||
/// - CGAL::Polyline_simplification_2::Hybrid_squared_distance_cost
|
||||
/// - CGAL::Polyline_simplification_2::Scaled_squared_distance_cost
|
||||
/// - CGAL::Polyline_simplification_2::Squared_distance_cost
|
||||
class PolylineSimplificationCostFunction
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
/// Given three consecutive polyline vertices "p,q,r", calculates the cost of removing
|
||||
/// vertex "q", replacing edges "p-q" and "q-r" with edge "p-r".
|
||||
/// Vertices "p,q,r" are consecutive in the current polyline, "possibly already simplified".
|
||||
/// @param cdt The underlying constrained Delaunay triangulation which embeeds the polyline set
|
||||
/// @param p The previous polyline vertex (given as a 'PolylineSimplificationVertex')
|
||||
/// @param q The current polyline vertex about to be removed
|
||||
/// @param r The next polyline vertex
|
||||
/// @param original_subpolyline_points_begin Start iterator for the range of points that describe the original (unmodified) polyline subsequence from "p" to "r" (inclusive)
|
||||
/// @param original_subpolyline_points_end Past-the-end iterator for the range of points that describe the original (unmodified) polyline subsequence from "p" to "r" (inclusive)
|
||||
/// @return The cost for removing "q". A result of "boost::none" can be used to indicate an infinite or uncomputable cost.
|
||||
template<class ConstrainedDelaunayTriangulation, class VertexHandle, class PointIterator>
|
||||
boost::optional<double> operator()( ConstrainedDelaunayTriangulation const& cdt
|
||||
, VertexHandle const& p
|
||||
, VertexHandle const& q
|
||||
, VertexHandle const& r
|
||||
, PointIterator original_subpolyline_points_begin
|
||||
, PointIterator original_subpolyline_points_end
|
||||
) const ;
|
||||
|
||||
};
|
||||
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
/// This classcept represent s wrap per are passed to the polyline simplification algorithm to calculate
|
||||
/// the "cost" of removing a vertex. Such a cost represents some measure of the deviation error between the
|
||||
/// polyline sets before and after removal. The smaller the error the lower the cost, and the algoritm processes
|
||||
/// vertices in increasing cost order to preserve the overall polyline set shape as much as possible
|
||||
/// concept
|
||||
class PolylineSimplificationNode
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
/// Returns the cost
|
||||
template<class Tr, class VertexDescriptor, class PointIterator>
|
||||
boost::optional<double> operator()( Tr const& aTr
|
||||
, VertexDescriptor const& aPV
|
||||
, VertexDescriptor const& aQV
|
||||
, VertexDescriptor const& aRV
|
||||
, PointIterator aOriginalSubpolyline_VerticesBegin
|
||||
, PointIterator aOriginalSubpolyline_VerticesEnd
|
||||
) const ;
|
||||
|
||||
};
|
||||
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
/// Models of this concept are passed to the polyline simplification algorithm to indicate
|
||||
/// when to stop the process.
|
||||
///
|
||||
/// @heading Has Models:
|
||||
/// - CGAL::Polyline_simplification_2::Stop_below_count_ratio_threshold
|
||||
/// - CGAL::Polyline_simplification_2::Stop_below_count_threshold
|
||||
/// - CGAL::Polyline_simplification_2::Stop_below_cost_threshold
|
||||
class PolylineSimplificationStopPredicate
|
||||
{
|
||||
public :
|
||||
|
||||
/// Indicates if the simplification must be stoped.
|
||||
/// This is called right before each vertex is about to be removed
|
||||
/// @param cdt The underlying constrained Delaunay triangulation which embeeds the polyline set
|
||||
/// @param q The current vertex about to be removed (given as a PolylineSimplificationVertex)
|
||||
/// @param cost The associated cost for removing the current vertex (as given by 'PolylineSimplificationCostFunction')
|
||||
/// @param initial_count The initial number of vertices in the entire polyline set (including intersection vertices not in any source polyline)
|
||||
/// @param current_count The current number of vertices
|
||||
/// @return true if the algorithm should stop, false if it should continue
|
||||
template<class ConstrainedDelaunayTriangulation, class VertexHandle>
|
||||
bool operator()( ConstrainedDelaunayTriangulation const& cdt
|
||||
, VertexHandle const& q
|
||||
, double cost
|
||||
, std::size_t initial_count
|
||||
, std::size_t current_count
|
||||
) const ;
|
||||
};
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
/// An implementation-defined model of this concept is the vertex of the 2D constrained Delaunay triangulation that is used internally
|
||||
/// by the polyline simplification data structure.
|
||||
struct PolylineSimplificationVertex : CGAL::Triangulation_vertex_base_with_id_2
|
||||
{
|
||||
/// @return true if this vertex correspond to an endpoint of an open polyline
|
||||
bool is_terminal() const ;
|
||||
|
||||
/// @return Sets whether the vertex is terminal or not.
|
||||
void set_is_terminal( bool is ) ;
|
||||
|
||||
/// @return true if this vertex is shared by more than one polyline
|
||||
bool is_shared() const ;
|
||||
|
||||
/// @return Sets whether the vertex is shared or not.
|
||||
void set_is_shared( bool is ) ;
|
||||
|
||||
/// @return true if this vertex has been manually marked as fixed by the user
|
||||
bool is_fixed() const ;
|
||||
|
||||
/// @return Sets whether the vertex is fixed or not.
|
||||
void set_is_fixed( bool is );
|
||||
|
||||
/// @return The simplification cost for the vertex as computed by the 'PolylineSimplificationCostFunction'
|
||||
boost::optional<double> cost() const ;
|
||||
|
||||
};
|
||||
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
/// Modles of this concept represent a visitation function object whose methods are called at key steps during
|
||||
/// the simplification process.
|
||||
struct PolylineSimplificationVisitor
|
||||
{
|
||||
/// Called at the very beggining, before vertices are being collected for processing
|
||||
void OnStarted() const {}
|
||||
|
||||
/// Called at the very end when the simplification finished
|
||||
void OnFinished() const {}
|
||||
|
||||
/// Called when the 'PolylineSimplificationStopPredicate' returned true
|
||||
void OnStopConditionReached() const {}
|
||||
|
||||
/// Called when a vertex that has been alreay classified as "removable" is put in the processing queue.
|
||||
/// @param vertex the collected vertex (as a 'PolylineSimplificationVertex')
|
||||
template<class VertexHandle>
|
||||
void OnCollected( VertexHandle const& vertex ) const {}
|
||||
|
||||
/// Called when a vertex has been popped off the processing queue and will be removed
|
||||
/// @param vertex the processed vertex
|
||||
/// @param cost the cost of removing the current vertex as calculated by the 'PolylineSimplificationCostFunction'
|
||||
/// @param initial_count the initial total number of vertices in the polyline set
|
||||
/// @param current_count the current total number of vertices in the polyline set
|
||||
template<class VertexHandle>
|
||||
void OnSelected( VertexHandle const& vertex, boost::optional<double> const& cost, unsigned initial_count, unsigned current_count) const {}
|
||||
|
||||
/// Called just before a selected vertex is removed
|
||||
/// @param p the previous vertex along the polyline
|
||||
/// @param q the vetex about to be remove
|
||||
/// @param r the next vertex along the polyline
|
||||
template<class VertexHandle>
|
||||
void OnRemoving( VertexHandle const& p, VertexHandle const& q, VertexHandle const& r) const {}
|
||||
|
||||
/// Called right after a selected vertex has been removed
|
||||
/// @param p the remaning vertex along the polyline that was right before "q" (now removed)
|
||||
/// @param r the remaning vertex along the polyline that was right after "q" (now removed)
|
||||
template<class VertexHandle>
|
||||
void OnRemoved( VertexHandle const& p, VertexHandle const& r) const {}
|
||||
|
||||
/// Called when a vertex that has been classified as "non-removable"
|
||||
/// @param vertex the non-removable vertex
|
||||
template<class VertexHandle>
|
||||
void OnNonRemovable( VertexHandle const& vertex) const {}
|
||||
|
||||
};
|
||||
|
|
@ -0,0 +1,376 @@
|
|||
// Copyright (c) 2012 Geometry Factory. All rights reserved.
|
||||
// All rights reserved.
|
||||
//
|
||||
// This file is part of CGAL (www.cgal.org).
|
||||
// You can redistribute it and/or modify it under the terms of the GNU
|
||||
// General Public License as published by the Free Software Foundation,
|
||||
// either version 3 of the License, or (at your option) any later version.
|
||||
//
|
||||
// Licensees holding a valid commercial license may use this file in
|
||||
// accordance with the commercial license agreement provided with the software.
|
||||
//
|
||||
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// $URL$
|
||||
// $Id$
|
||||
//
|
||||
// Author(s) : Andreas Fabri
|
||||
//
|
||||
#ifndef CGAL_POLYLINE_SIMPLIFICATION_2_SIMPLIFY_H
|
||||
#define CGAL_POLYLINE_SIMPLIFICATION_2_SIMPLIFY_H
|
||||
|
||||
|
||||
#include <CGAL/Polyline_simplification_2/Squared_distance_cost.h>
|
||||
#include <CGAL/Polyline_simplification_2/Scaled_squared_distance_cost.h>
|
||||
#include <CGAL/Polyline_simplification_2/Hybrid_squared_distance_cost.h>
|
||||
#include <CGAL/Polyline_simplification_2/Stop_below_count_ratio_threshold.h>
|
||||
#include <CGAL/Polyline_simplification_2/Stop_below_count_threshold.h>
|
||||
#include <CGAL/Polyline_simplification_2/Stop_above_cost_threshold.h>
|
||||
#include <CGAL/Polyline_simplification_2/mark_vertices_unremovable.h>
|
||||
#include <CGAL/Modifiable_priority_queue.h>
|
||||
#include <list>
|
||||
|
||||
// Needed for Polygon_2
|
||||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||
#include <CGAL/Constrained_Delaunay_triangulation_2.h>
|
||||
#include <CGAL/Polyline_constrained_triangulation_2.h>
|
||||
#include <list>
|
||||
|
||||
|
||||
namespace CGAL {
|
||||
|
||||
template < class Tr >
|
||||
class Polyline_constrained_triangulation_2;
|
||||
|
||||
|
||||
template <class PolygonTraits_2, class Container>
|
||||
class Polygon_2;
|
||||
|
||||
namespace Polyline_simplification_2 {
|
||||
|
||||
template <typename PCT, typename CostFunction, typename StopFunction>
|
||||
class Polyline_simplification_2
|
||||
{
|
||||
public:
|
||||
|
||||
typedef typename PCT::Point Point;
|
||||
typedef typename PCT::Constraint_id Constraint_id;
|
||||
typedef typename PCT::Constraint_iterator Constraint_iterator;
|
||||
typedef typename PCT::Vertices_in_constraint_iterator Vertices_in_constraint_iterator;
|
||||
//typedef typename PCT::Points_in_constraint_iterator Points_in_constraint_iterator;
|
||||
typedef typename PCT::Vertex_handle Vertex_handle;
|
||||
typedef typename PCT::Vertex_circulator Vertex_circulator;
|
||||
|
||||
PCT& pct;
|
||||
bool keep_points;
|
||||
CostFunction cost;
|
||||
StopFunction stop;
|
||||
std::size_t pct_initial_number_of_vertices, number_of_unremovable_vertices;
|
||||
|
||||
|
||||
struct Compare_cost
|
||||
{
|
||||
bool operator() ( Vertices_in_constraint_iterator const& x,
|
||||
Vertices_in_constraint_iterator const& y ) const
|
||||
{
|
||||
return x->cost < y->cost;
|
||||
}
|
||||
} ;
|
||||
|
||||
struct Id_map : public boost::put_get_helper<std::size_t, Id_map>
|
||||
{
|
||||
typedef boost::readable_property_map_tag category;
|
||||
typedef std::size_t value_type;
|
||||
typedef value_type reference;
|
||||
typedef Vertices_in_constraint_iterator key_type;
|
||||
|
||||
reference operator[] ( key_type const& x ) const { return x->id ; }
|
||||
} ;
|
||||
|
||||
typedef CGAL::Modifiable_priority_queue<Vertices_in_constraint_iterator,Compare_cost,Id_map> MPQ ;
|
||||
|
||||
MPQ* mpq;
|
||||
|
||||
Polyline_simplification_2(PCT& pct, CostFunction cost, StopFunction stop, bool keep_points)
|
||||
: pct(pct), cost(cost), stop(stop), keep_points(keep_points), pct_initial_number_of_vertices(pct.number_of_vertices()), number_of_unremovable_vertices(0)
|
||||
{
|
||||
std::cerr << pct_initial_number_of_vertices << std::endl;
|
||||
int m = initialize_indices();
|
||||
Compare_cost cc;
|
||||
Id_map idm;
|
||||
mpq = new MPQ(m, cc, idm);
|
||||
initialize_costs();
|
||||
}
|
||||
|
||||
Polyline_simplification_2(PCT& pct, Constraint_id cid, CostFunction cost, StopFunction stop, bool keep_points)
|
||||
: pct(pct), cost(cost), stop(stop), keep_points(keep_points), pct_initial_number_of_vertices(pct.number_of_vertices()), number_of_unremovable_vertices(0)
|
||||
{
|
||||
int m = initialize_indices(cid);
|
||||
Compare_cost cc;
|
||||
Id_map idm;
|
||||
mpq = new MPQ(m, cc, idm);
|
||||
initialize_costs(cid);
|
||||
}
|
||||
|
||||
|
||||
|
||||
~Polyline_simplification_2()
|
||||
{
|
||||
delete mpq;
|
||||
}
|
||||
|
||||
Vertices_in_constraint_iterator
|
||||
decrement(Vertices_in_constraint_iterator it)
|
||||
{
|
||||
do{
|
||||
--it;
|
||||
} while(it->removed);
|
||||
return it;
|
||||
}
|
||||
|
||||
Vertices_in_constraint_iterator
|
||||
increment(Vertices_in_constraint_iterator it)
|
||||
{
|
||||
do{
|
||||
++it;
|
||||
} while(it->removed);
|
||||
return it;
|
||||
}
|
||||
|
||||
|
||||
// For all polyline constraints we compute the cost of all non fixed and not removed vertices
|
||||
int
|
||||
initialize_costs(Constraint_id cid)
|
||||
{
|
||||
int n=0;
|
||||
for(Vertices_in_constraint_iterator it = pct.vertices_in_constraint_begin(cid);
|
||||
it != pct.vertices_in_constraint_end(cid);
|
||||
++it){
|
||||
if(! it->fixed && ! it->removed){
|
||||
Vertices_in_constraint_iterator u = decrement(it);
|
||||
Vertices_in_constraint_iterator w = increment(it);
|
||||
|
||||
boost::optional<double> dist = cost(pct, u, it, w);
|
||||
if(dist){
|
||||
it->cost = *dist;
|
||||
(*mpq).push(it);
|
||||
++n;
|
||||
} else {
|
||||
it->cost = (std::numeric_limits<double>::max)();
|
||||
std::cerr << "could not compute a cost" << std::endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
void
|
||||
initialize_costs()
|
||||
{
|
||||
int n=0;
|
||||
Constraint_iterator cit = pct.constraints_begin(), e = pct.constraints_end();
|
||||
for(; cit!=e; ++cit){
|
||||
n+= initialize_costs(*cit);
|
||||
}
|
||||
std::cerr << "Initialized cost of " << n << " vertices" << std::endl;
|
||||
}
|
||||
|
||||
bool
|
||||
is_removable(Vertices_in_constraint_iterator it)
|
||||
{
|
||||
typedef PCT::Geom_traits Geom_traits;
|
||||
if( it->removed || it->fixed){
|
||||
return false;
|
||||
}
|
||||
|
||||
Vertex_handle vh = it->vertex;
|
||||
Vertices_in_constraint_iterator u = decrement(it);
|
||||
Vertex_handle uh = u->vertex;
|
||||
Vertices_in_constraint_iterator w = increment(it);
|
||||
Vertex_handle wh = w->vertex;
|
||||
|
||||
Geom_traits::Orientation_2 orientation_2 = pct.geom_traits().orientation_2_object();
|
||||
CGAL::Orientation o = orientation_2(uh->point(), vh->point(), wh->point());
|
||||
if(o == CGAL::COLLINEAR){
|
||||
return true;
|
||||
}
|
||||
if(o == CGAL::LEFT_TURN){
|
||||
std::swap(uh,wh);
|
||||
}
|
||||
|
||||
// uh, vh, wh perform a right turn
|
||||
const Point& up = uh->point();
|
||||
const Point& wp = wh->point();
|
||||
Vertex_circulator circ = pct.incident_vertices(vh);
|
||||
while(circ != uh){
|
||||
++circ;
|
||||
}
|
||||
++circ;
|
||||
while(circ != wh){
|
||||
o = orientation_2(up, circ->point(), wp);
|
||||
if(orientation_2(up, wp, circ->point()) != CGAL::RIGHT_TURN){
|
||||
return false;
|
||||
}
|
||||
++circ;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
initialize_indices(Constraint_id cid, int id = 0)
|
||||
{
|
||||
for(Vertices_in_constraint_iterator it = pct.vertices_in_constraint_begin(cid);
|
||||
it != pct.vertices_in_constraint_end(cid);
|
||||
++it){
|
||||
it->id = id++;
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
int
|
||||
initialize_indices()
|
||||
{
|
||||
int id = 0;
|
||||
Constraint_iterator b = pct.constraints_begin(), e = pct.constraints_end();
|
||||
for(; b!=e; ++b){
|
||||
id = initialize_indices(*b, id);
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
bool
|
||||
operator()()
|
||||
{
|
||||
if((*mpq).empty()){
|
||||
return false;
|
||||
}
|
||||
Vertices_in_constraint_iterator v = (*mpq).top();
|
||||
(*mpq).pop();
|
||||
if(stop(pct, v, v->cost, pct_initial_number_of_vertices, pct.number_of_vertices())){
|
||||
return false;
|
||||
}
|
||||
if(is_removable(v)){
|
||||
Vertices_in_constraint_iterator u = decrement(v), w = increment(v);
|
||||
pct.simplify(u,v,w, keep_points);
|
||||
|
||||
if(! u->fixed){
|
||||
Vertices_in_constraint_iterator uu = decrement(u);
|
||||
boost::optional<double> dist = cost(pct, uu,u,w);
|
||||
if(! dist){
|
||||
std::cerr << "undefined cost not handled yet" << std::endl;
|
||||
} else {
|
||||
u->cost = *dist;
|
||||
if((*mpq).contains(u)){
|
||||
(*mpq).update(u, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(! w->fixed){
|
||||
Vertices_in_constraint_iterator ww = increment(w);
|
||||
boost::optional<double> dist = cost(pct, u,w,ww);
|
||||
if(! dist){
|
||||
std::cerr << "undefined cost not handled yet" << std::endl;
|
||||
} else {
|
||||
w->cost = *dist;
|
||||
if((*mpq).contains(w)){
|
||||
(*mpq).update(w, true);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
} else {
|
||||
++number_of_unremovable_vertices;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
std::size_t
|
||||
number_of_removed_vertices() const
|
||||
{
|
||||
return pct_initial_number_of_vertices - pct.number_of_vertices();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
template <class PolygonTraits_2, class Container, class CostFunction, class StopFunction>
|
||||
CGAL::Polygon_2<PolygonTraits_2,Container>
|
||||
simplify(const CGAL::Polygon_2<PolygonTraits_2,Container>& polygon,
|
||||
CostFunction cost,
|
||||
StopFunction stop)
|
||||
{
|
||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||
typedef CGAL::Triangulation_vertex_base_2<K> Vb;
|
||||
typedef CGAL::Constrained_triangulation_face_base_2<K> Fb;
|
||||
typedef CGAL::Triangulation_data_structure_2<Vb,Fb> TDS;
|
||||
typedef CGAL::Exact_predicates_tag Itag;
|
||||
typedef CGAL::Constrained_Delaunay_triangulation_2<K,TDS, Itag> CDT;
|
||||
typedef CGAL::Polyline_constrained_triangulation_2<CDT> PCT;
|
||||
typedef PCT::Constraint_id Constraint_id;
|
||||
typedef PCT::Vertices_in_constraint_iterator Vertices_in_constraint_iterator;
|
||||
|
||||
PCT pct;
|
||||
|
||||
Constraint_id cid = pct.insert_constraint(polygon);
|
||||
|
||||
mark_vertices_unremovable(pct);
|
||||
bool keep_points = false;
|
||||
Polyline_simplification_2<PCT, CostFunction, StopFunction> simplifier(pct, cost, stop, keep_points);
|
||||
while(simplifier()){}
|
||||
|
||||
CGAL::Polygon_2<PolygonTraits_2,Container> result;
|
||||
for(Vertices_in_constraint_iterator it = pct.vertices_in_constraint_begin(cid);
|
||||
it != pct.vertices_in_constraint_end(cid);
|
||||
it++){
|
||||
if(! it->removed){
|
||||
result.push_back(it->point);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
template <class Tr, class CostFunction, class StopFunction>
|
||||
std::size_t
|
||||
simplify(CGAL::Polyline_constrained_triangulation_2<Tr>& pct,
|
||||
typename CGAL::Polyline_constrained_triangulation_2<Tr>::Constraint_id cid,
|
||||
CostFunction cost,
|
||||
StopFunction stop,
|
||||
bool keep_points = false)
|
||||
{
|
||||
typedef CGAL::Polyline_constrained_triangulation_2<Tr> PCT;
|
||||
Polyline_simplification_2<PCT, CostFunction, StopFunction> simplifier(pct, cid, cost, stop, keep_points);
|
||||
|
||||
while(simplifier()){}
|
||||
if(! keep_points){
|
||||
pct.remove_points_from_constraints(cid);
|
||||
}
|
||||
return simplifier.number_of_removed_vertices();
|
||||
}
|
||||
|
||||
|
||||
template <class Tr, class CostFunction, class StopFunction>
|
||||
std::size_t
|
||||
simplify(CGAL::Polyline_constrained_triangulation_2<Tr>& pct,
|
||||
CostFunction cost,
|
||||
StopFunction stop,
|
||||
bool keep_points = false)
|
||||
{
|
||||
typedef CGAL::Polyline_constrained_triangulation_2<Tr> PCT;
|
||||
Polyline_simplification_2<PCT, CostFunction, StopFunction> simplifier(pct, cost, stop, keep_points);
|
||||
|
||||
while(simplifier()){}
|
||||
if(! keep_points){
|
||||
pct.remove_points_from_constraints();
|
||||
}
|
||||
std::cerr << "unremovable vertices: " << simplifier.number_of_unremovable_vertices << std::endl;
|
||||
std::cerr << "simplify removed " << simplifier.number_of_removed_vertices() << "vertices" << std::endl;
|
||||
return simplifier.number_of_removed_vertices();
|
||||
}
|
||||
|
||||
} // namespace polyline_simplification_2
|
||||
} // namespace CGAL
|
||||
#endif CGAL_POLYLINE_SIMPLIFICATION_2_SIMPLIFY_H
|
||||
|
|
@ -0,0 +1,473 @@
|
|||
#pragma warning( disable : 4503 )
|
||||
|
||||
#include <fstream>
|
||||
#include <vector>
|
||||
|
||||
// CGAL headers
|
||||
#include <CGAL/Bbox_2.h>
|
||||
#include <CGAL/assertions_behaviour.h>
|
||||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||
#include <CGAL/Timer.h>
|
||||
|
||||
#define CGAL_TESTING_POLYLINE_SIMPLIFICATION
|
||||
#define CGAL_POLYLINE_SIMPLIFICATION_TRACE_LEVEL 15
|
||||
|
||||
bool lAppToLog = false ;
|
||||
void Polyline_simplification_2_external_trace( std::string m )
|
||||
{
|
||||
std::ofstream out("polysim_log.txt", ( lAppToLog ? std::ios::app | std::ios::ate : std::ios::trunc | std::ios::ate ) );
|
||||
out << std::setprecision(19) << m << std::endl << std::flush ;
|
||||
lAppToLog = true ;
|
||||
}
|
||||
|
||||
#define STR(m) static_cast<std::ostringstream&>( std::ostringstream() << std::string() << m << std::endl ).str()
|
||||
|
||||
int sErrors = 0 ;
|
||||
|
||||
void error ( std::string msg )
|
||||
{
|
||||
std::cerr << msg << std::endl ;
|
||||
++ sErrors ;
|
||||
}
|
||||
|
||||
|
||||
void error_handler ( char const* what, char const* expr, char const* file, int line, char const* msg )
|
||||
{
|
||||
error( STR( "CGAL error: " << what << " violation!" << std::endl
|
||||
<< "Expr: " << expr << std::endl
|
||||
<< "File: " << file << std::endl
|
||||
<< "Line: " << line << std::endl
|
||||
<< "Explanation:" << ( msg ? msg : "" )
|
||||
)
|
||||
) ;
|
||||
|
||||
throw std::runtime_error("CGAL ERROR");
|
||||
}
|
||||
|
||||
|
||||
#include <CGAL/Polyline_simplification_2/Stop_below_count_threshold.h>
|
||||
#include <CGAL/Polyline_simplification_2/Squared_distance_cost.h>
|
||||
#include <CGAL/Polyline_simplification_2.h>
|
||||
|
||||
using namespace std ;
|
||||
|
||||
namespace PS2 = CGAL::Polyline_simplification_2 ;
|
||||
|
||||
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
|
||||
|
||||
typedef K::Point_2 Point_2;
|
||||
|
||||
typedef CGAL::Simplify_polylines_2<K> PS;
|
||||
|
||||
typedef PS::Vertex_handle Vertex_handle ;
|
||||
typedef PS::Open_polyline Open_polyline ;
|
||||
typedef PS::Open_polyline_handle Open_polyline_handle ;
|
||||
typedef PS::Closed_polyline Closed_polyline ;
|
||||
typedef PS::Closed_polyline_handle Closed_polyline_handle ;
|
||||
|
||||
void dump_polygon( Closed_polyline_handle aPoly )
|
||||
{
|
||||
Closed_polyline::Circulator h = aPoly->circulator();
|
||||
Closed_polyline::Circulator c = h ;
|
||||
|
||||
do
|
||||
{
|
||||
std::cout << "V" << c->id() << " " ;
|
||||
}
|
||||
while ( ++ c != h ) ;
|
||||
|
||||
std::cout << std::endl ;
|
||||
}
|
||||
|
||||
typedef std::vector<int> ID_vector ;
|
||||
typedef std::vector<Point_2> Point_vector ;
|
||||
|
||||
Point_vector dump_vertex_point_sequence( Open_polyline_handle aPoly )
|
||||
{
|
||||
Point_vector rSeq ;
|
||||
|
||||
for ( Open_polyline::Iterator it = aPoly->begin() ; it != aPoly->end() ; ++ it )
|
||||
{
|
||||
rSeq.push_back( it->point() ) ;
|
||||
}
|
||||
|
||||
return rSeq ;
|
||||
}
|
||||
|
||||
Point_vector dump_vertex_point_sequence( Closed_polyline_handle aPoly )
|
||||
{
|
||||
Point_vector rSeq ;
|
||||
|
||||
Closed_polyline::Circulator h = aPoly->circulator();
|
||||
Closed_polyline::Circulator c = h ;
|
||||
|
||||
do
|
||||
{
|
||||
rSeq.push_back( c->point() ) ;
|
||||
}
|
||||
while ( ++ c != h ) ;
|
||||
|
||||
|
||||
return rSeq ;
|
||||
}
|
||||
|
||||
ID_vector dump_vertex_id_sequence( Open_polyline_handle aPoly )
|
||||
{
|
||||
ID_vector rSeq ;
|
||||
|
||||
for ( Open_polyline::Iterator it = aPoly->begin() ; it != aPoly->end() ; ++ it )
|
||||
{
|
||||
rSeq.push_back( it->id() ) ;
|
||||
}
|
||||
|
||||
return rSeq ;
|
||||
}
|
||||
|
||||
ID_vector dump_vertex_id_sequence( Closed_polyline_handle aPoly )
|
||||
{
|
||||
ID_vector rSeq ;
|
||||
|
||||
Closed_polyline::Circulator h = aPoly->circulator();
|
||||
Closed_polyline::Circulator c = h ;
|
||||
|
||||
do
|
||||
{
|
||||
rSeq.push_back( c->id() ) ;
|
||||
}
|
||||
while ( ++ c != h ) ;
|
||||
|
||||
|
||||
return rSeq ;
|
||||
}
|
||||
|
||||
template<class T>
|
||||
std::string to_string( T const& t )
|
||||
{
|
||||
std::ostringstream ss ;
|
||||
ss << t ;
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
std::string to_string( Vertex_handle const& v )
|
||||
{
|
||||
std::ostringstream ss ;
|
||||
ss << "[" << v->id() << "@" << v->point() << "]" ;
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
template<class It>
|
||||
std::string sequence_to_string( It beg, It end )
|
||||
{
|
||||
std::ostringstream ss ;
|
||||
ss << "[" ;
|
||||
while ( beg != end )
|
||||
ss << to_string(*(beg++)) << "," ;
|
||||
ss << "]";
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
template<class InputIteratorA, class InputIteratorB>
|
||||
void check_sequence ( InputIteratorA got_beg, InputIteratorA got_end, InputIteratorB expected_beg, InputIteratorB expected_end )
|
||||
{
|
||||
std::size_t got_s = std::distance(got_beg, got_end) ;
|
||||
std::size_t expected_s = std::distance(expected_beg, expected_end) ;
|
||||
|
||||
bool ok = false ;
|
||||
|
||||
if ( got_s == expected_s )
|
||||
{
|
||||
std::pair<InputIteratorA,InputIteratorB> mr = std::mismatch(got_beg,got_end,expected_beg);
|
||||
|
||||
if ( mr.first == got_end || mr.second == expected_end )
|
||||
ok = true ;
|
||||
}
|
||||
|
||||
if ( !ok )
|
||||
error( STR("Vertex sequences mismatch:\n Got=" << sequence_to_string(got_beg, got_end) << "\n Expected=" << sequence_to_string(expected_beg, expected_end)) );
|
||||
}
|
||||
|
||||
void test_crosses_case_0()
|
||||
{
|
||||
std::cout << "Testing crossing polygons case 0" << std::endl ;
|
||||
|
||||
PS ps;
|
||||
|
||||
Point_2 lPtsA[4] = { Point_2(0,-10)
|
||||
, Point_2(10,-10)
|
||||
, Point_2(10,20)
|
||||
, Point_2(0,20)
|
||||
} ;
|
||||
|
||||
Point_2 lPtsB[4] = { Point_2(-10,0)
|
||||
, Point_2(20,0)
|
||||
, Point_2(20,10)
|
||||
, Point_2(-10,10)
|
||||
} ;
|
||||
|
||||
Closed_polyline_handle lPolyA = ps.insert_polygon(lPtsA,lPtsA+4) ;
|
||||
Closed_polyline_handle lPolyB = ps.insert_polygon(lPtsB,lPtsB+4) ;
|
||||
|
||||
ps.simplify( PS2::Stop_below_count_threshold(0), PS2::Squared_distance_cost()) ;
|
||||
|
||||
ID_vector lSeqA = dump_vertex_id_sequence(lPolyA);
|
||||
ID_vector lSeqB = dump_vertex_id_sequence(lPolyB);
|
||||
|
||||
int lExpectedA[] = {9,10,11,8} ;
|
||||
int lExpectedB[] = {8,9,10,11};
|
||||
|
||||
check_sequence(lSeqA.begin(), lSeqA.end(), lExpectedA, lExpectedA+4);
|
||||
check_sequence(lSeqB.begin(), lSeqB.end(), lExpectedB, lExpectedB+4);
|
||||
|
||||
Point_2 lResA[4] = { Point_2(10,0)
|
||||
, Point_2(10,10)
|
||||
, Point_2(0,10)
|
||||
, Point_2(0,0)
|
||||
} ;
|
||||
|
||||
Point_2 lResB[4] = { Point_2(0,0)
|
||||
, Point_2(10,0)
|
||||
, Point_2(10,10)
|
||||
, Point_2(0,10)
|
||||
} ;
|
||||
Point_vector lPA = dump_vertex_point_sequence(lPolyA);
|
||||
Point_vector lPB = dump_vertex_point_sequence(lPolyB);
|
||||
|
||||
check_sequence(lPA.begin(), lPA.end(), lResA, lResA+4);
|
||||
check_sequence(lPB.begin(), lPB.end(), lResB, lResB+4);
|
||||
|
||||
}
|
||||
|
||||
void test_crosses_case_1()
|
||||
{
|
||||
std::cout << "Testing crossing polygons case 1" << std::endl ;
|
||||
|
||||
PS ps;
|
||||
|
||||
Point_2 lPtsA[4] = { Point_2(0,0)
|
||||
, Point_2(10,0)
|
||||
, Point_2(10,10)
|
||||
, Point_2(0,10)
|
||||
} ;
|
||||
|
||||
Point_2 lPtsB[4] = { Point_2(5,-5)
|
||||
, Point_2(15,-5)
|
||||
, Point_2(15,15)
|
||||
, Point_2(5,15)
|
||||
} ;
|
||||
|
||||
Closed_polyline_handle lPolyA = ps.insert_polygon(lPtsA,lPtsA+4) ;
|
||||
Closed_polyline_handle lPolyB = ps.insert_polygon(lPtsB,lPtsB+4) ;
|
||||
|
||||
ps.simplify( PS2::Stop_below_count_threshold(0), PS2::Squared_distance_cost()) ;
|
||||
|
||||
ID_vector lSeqA = dump_vertex_id_sequence(lPolyA);
|
||||
ID_vector lSeqB = dump_vertex_id_sequence(lPolyB);
|
||||
|
||||
int lExpectedA[] = {9,8,3} ;
|
||||
int lExpectedB[] = {5,6,8,9};
|
||||
|
||||
check_sequence(lSeqA.begin(), lSeqA.end(), lExpectedA, lExpectedA+3);
|
||||
check_sequence(lSeqB.begin(), lSeqB.end(), lExpectedB, lExpectedB+4);
|
||||
|
||||
Point_2 lResA[3] = { Point_2(5,0)
|
||||
, Point_2(5,10)
|
||||
, Point_2(0,10)
|
||||
} ;
|
||||
|
||||
Point_2 lResB[4] = { Point_2(15,-5)
|
||||
, Point_2(15,15)
|
||||
, Point_2(5,10)
|
||||
, Point_2(5,0)
|
||||
} ;
|
||||
|
||||
Point_vector lPA = dump_vertex_point_sequence(lPolyA);
|
||||
Point_vector lPB = dump_vertex_point_sequence(lPolyB);
|
||||
|
||||
check_sequence(lPA.begin(), lPA.end(), lResA, lResA+3);
|
||||
check_sequence(lPB.begin(), lPB.end(), lResB, lResB+4);
|
||||
|
||||
}
|
||||
|
||||
void test_crosses_case_2()
|
||||
{
|
||||
std::cout << "Testing crossing polylines case 0" << std::endl ;
|
||||
|
||||
PS ps;
|
||||
|
||||
Point_2 lPtsA[4] = { Point_2(0,0)
|
||||
, Point_2(10,10)
|
||||
, Point_2(20,0)
|
||||
} ;
|
||||
Point_2 lPtsB[4] = { Point_2(10,20)
|
||||
, Point_2(10,0)
|
||||
} ;
|
||||
|
||||
Open_polyline_handle lPolyA = ps.insert_polyline(lPtsA,lPtsA+3) ;
|
||||
Open_polyline_handle lPolyB = ps.insert_polyline(lPtsB,lPtsB+2) ;
|
||||
|
||||
ps.simplify( PS2::Stop_below_count_threshold(0), PS2::Squared_distance_cost()) ;
|
||||
|
||||
ID_vector lSeqA = dump_vertex_id_sequence(lPolyA);
|
||||
ID_vector lSeqB = dump_vertex_id_sequence(lPolyB);
|
||||
|
||||
int lExpectedA[] = {0,1,2} ;
|
||||
int lExpectedB[] = {3,1,4} ;
|
||||
|
||||
check_sequence(lSeqA.begin(), lSeqA.end(), lExpectedA, lExpectedA+3);
|
||||
check_sequence(lSeqB.begin(), lSeqB.end(), lExpectedB, lExpectedB+3);
|
||||
|
||||
Point_2 lResA[3] = { Point_2(0,0)
|
||||
, Point_2(10,10)
|
||||
, Point_2(20,0)
|
||||
} ;
|
||||
|
||||
Point_2 lResB[3] = { Point_2(10,20)
|
||||
, Point_2(10,10)
|
||||
, Point_2(10,0)
|
||||
} ;
|
||||
|
||||
Point_vector lPA = dump_vertex_point_sequence(lPolyA);
|
||||
Point_vector lPB = dump_vertex_point_sequence(lPolyB);
|
||||
|
||||
check_sequence(lPA.begin(), lPA.end(), lResA, lResA+3);
|
||||
check_sequence(lPB.begin(), lPB.end(), lResB, lResB+3);
|
||||
|
||||
}
|
||||
|
||||
struct Visitor
|
||||
{
|
||||
Visitor( ID_vector* aSeq ) : mSeq(aSeq) {}
|
||||
|
||||
void OnStarted() const {}
|
||||
|
||||
void OnFinished() const {}
|
||||
|
||||
void OnStopConditionReached() const {}
|
||||
|
||||
template<class VH>
|
||||
void OnCollected( VH const& ) const {}
|
||||
|
||||
template<class VH>
|
||||
void OnSelected( VH const&, boost::optional<double> const&, unsigned, unsigned ) const {}
|
||||
|
||||
template<class VH>
|
||||
void OnRemoving( VH const&, VH const& aV, VH const& ) const { mSeq->push_back(aV->id()) ; }
|
||||
|
||||
template<class VH>
|
||||
void OnRemoved( VH const&, VH const&) const {}
|
||||
|
||||
template<class VH>
|
||||
void OnNonRemovable( VH const& ) const {}
|
||||
|
||||
ID_vector* mSeq ;
|
||||
|
||||
} ;
|
||||
|
||||
void test_removal()
|
||||
{
|
||||
std::cout << "Testing removal sequence" << std::endl ;
|
||||
|
||||
PS ps;
|
||||
|
||||
Point_2 lPts[10] = { Point_2(0,0)
|
||||
, Point_2(1,1)
|
||||
, Point_2(3,-3)
|
||||
, Point_2(9,9)
|
||||
, Point_2(0,18)
|
||||
} ;
|
||||
|
||||
Open_polyline_handle lPoly = ps.insert_polyline(lPts,lPts+5) ;
|
||||
|
||||
ID_vector lRemovedSeq ;
|
||||
|
||||
Visitor vis(&lRemovedSeq) ;
|
||||
|
||||
ps.simplify( PS2::Stop_below_count_threshold(7), PS2::Squared_distance_cost(), vis) ;
|
||||
|
||||
int lExpected[] = {1,2,3} ;
|
||||
|
||||
check_sequence(lRemovedSeq.begin(), lRemovedSeq.end(), lExpected, lExpected+3);
|
||||
|
||||
Point_2 lRes[7] = { Point_2(0,0)
|
||||
, Point_2(0,18)
|
||||
} ;
|
||||
|
||||
Point_vector lPP = dump_vertex_point_sequence(lPoly);
|
||||
|
||||
check_sequence(lPP.begin(), lPP.end(), lRes, lRes+2);
|
||||
|
||||
}
|
||||
|
||||
void test_fixed()
|
||||
{
|
||||
std::cout << "Testing fixed vertices" << std::endl ;
|
||||
|
||||
PS ps;
|
||||
|
||||
Point_2 lPts[10] = { Point_2(0,0)
|
||||
, Point_2(1,1)
|
||||
, Point_2(2,0)
|
||||
, Point_2(6,0)
|
||||
, Point_2(7,2)
|
||||
, Point_2(8,0)
|
||||
, Point_2(13,0)
|
||||
, Point_2(14,4)
|
||||
, Point_2(15,0)
|
||||
, Point_2(19,0)
|
||||
} ;
|
||||
|
||||
Open_polyline_handle lPoly = ps.insert_polyline(lPts,lPts+10) ;
|
||||
|
||||
for ( Open_polyline::Iterator it = lPoly->begin() ; it != lPoly->end() ; ++ it )
|
||||
if ( it->point().y() == 0 )
|
||||
it->set_is_fixed(true);
|
||||
|
||||
ID_vector lRemovedSeq ;
|
||||
|
||||
Visitor vis(&lRemovedSeq) ;
|
||||
|
||||
ps.simplify( PS2::Stop_below_count_threshold(7), PS2::Squared_distance_cost(), vis) ;
|
||||
|
||||
int lExpected[] = {1,4,7} ;
|
||||
|
||||
check_sequence(lRemovedSeq.begin(), lRemovedSeq.end(), lExpected, lExpected+3);
|
||||
|
||||
Point_2 lRes[7] = { Point_2(0,0)
|
||||
, Point_2(2,0)
|
||||
, Point_2(6,0)
|
||||
, Point_2(8,0)
|
||||
, Point_2(13,0)
|
||||
, Point_2(15,0)
|
||||
, Point_2(19,0)
|
||||
} ;
|
||||
|
||||
Point_vector lPP = dump_vertex_point_sequence(lPoly);
|
||||
|
||||
check_sequence(lPP.begin(), lPP.end(), lRes, lRes+7);
|
||||
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int rOK = 1 ;
|
||||
|
||||
CGAL::set_error_handler (error_handler);
|
||||
CGAL::set_warning_handler(error_handler);
|
||||
|
||||
try
|
||||
{
|
||||
test_crosses_case_0();
|
||||
test_crosses_case_1();
|
||||
test_crosses_case_2();
|
||||
test_removal();
|
||||
test_fixed();
|
||||
|
||||
rOK = sErrors == 0 ;
|
||||
}
|
||||
catch(exception& e)
|
||||
{
|
||||
cerr << e.what() << "\n";
|
||||
}
|
||||
|
||||
return rOK ;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,14 @@
|
|||
|
||||
|
||||
2
|
||||
4
|
||||
-0.8 -0.4
|
||||
0.8 -0.4
|
||||
0.8 0.4
|
||||
-0.8 0.4
|
||||
4
|
||||
-0.4 -0.2
|
||||
0.4 -0.2
|
||||
0.4 0.2
|
||||
-0.4 0.2
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,995 @@
|
|||
1
|
||||
993
|
||||
142.528622059284 267.551290109461
|
||||
142.102196751295 267.420185967987
|
||||
141.749529509006 267.113055064981
|
||||
141.577471850572 266.658760651653
|
||||
141.692875294147 266.086165979212
|
||||
142.131916029511 265.612058832949
|
||||
142.278340367733 265.137320115869
|
||||
142.218843473254 264.659066632097
|
||||
142.040120510517 264.174415185755
|
||||
141.671777038036 263.174385621851
|
||||
141.655546857176 262.653241112535
|
||||
141.866871265827 262.114165857141
|
||||
142.434497265278 260.878669336145
|
||||
142.644948987423 260.228667333429
|
||||
142.759869007526 259.53216512472
|
||||
142.249853758274 259.066325500315
|
||||
141.621244816242 258.82417066366
|
||||
140.27787437862 258.563170984095
|
||||
139.469840882478 259.21368731529
|
||||
138.855295328556 259.973622396295
|
||||
138.383319912611 260.81505013973
|
||||
138.002996830402 261.710044458216
|
||||
137.313636450229 263.549028470819
|
||||
136.902763543783 264.437165990179
|
||||
136.379871754108 265.267165735071
|
||||
136.418364795057 265.931673623329
|
||||
136.370615182577 266.459297433203
|
||||
136.25165368071 266.860692463522
|
||||
136.076511053501 267.146514013117
|
||||
135.617805479227 267.414057865446
|
||||
135.114744572101 267.347171380823
|
||||
134.687574444471 267.031096949881
|
||||
134.456541208683 266.551076963251
|
||||
134.541890977083 265.992353811567
|
||||
135.063869862018 265.440169885462
|
||||
134.789603738247 263.620169236963
|
||||
134.846972895919 262.729410364931
|
||||
135.029744533954 261.865417077845
|
||||
135.334719402848 261.038642838304
|
||||
135.758698253093 260.259541108911
|
||||
136.298481835185 259.538565352266
|
||||
136.950870899616 258.88616903097
|
||||
136.456704614816 259.032862379854
|
||||
136.023042349277 258.975027635401
|
||||
135.262745289264 258.498290613001
|
||||
134.521010546146 257.960991456812
|
||||
134.110551176725 257.827454045122
|
||||
133.648868946491 257.868163659876
|
||||
131.771746067463 259.540917947596
|
||||
131.013418344913 260.511077239817
|
||||
130.784190772234 261.07742540509
|
||||
130.694874195514 261.716170862024
|
||||
130.095355777202 262.825296953028
|
||||
129.623996166645 263.978671624964
|
||||
128.757870106159 266.334167077845
|
||||
128.466633049904 266.544768348043
|
||||
128.103653339802 266.666153981989
|
||||
127.319872288166 266.656795099085
|
||||
126.977774111686 266.533808961218
|
||||
126.721339611469 266.337123945063
|
||||
126.589920370041 266.07061924011
|
||||
126.622867969928 265.738174035852
|
||||
127.182927785574 265.450063451832
|
||||
127.536338953434 265.065872028177
|
||||
127.732578037439 264.608298584526
|
||||
127.82112160152 264.100041940515
|
||||
127.873028425632 263.022274329966
|
||||
127.935344813524 262.498161002701
|
||||
128.087871937214 262.014159753626
|
||||
128.509574560581 261.012352302378
|
||||
129.059246448932 260.049916818445
|
||||
130.272869495807 258.216170862024
|
||||
129.391635088382 257.907841041391
|
||||
128.419744877277 257.669541909998
|
||||
127.461916593967 257.692056491678
|
||||
127.020999966322 257.860738619869
|
||||
126.622867969928 258.166167810266
|
||||
124.611995129047 261.362794473474
|
||||
123.676355151592 262.984404399698
|
||||
122.898868946491 264.671172693079
|
||||
122.211719242988 265.073309406345
|
||||
121.712104229389 265.135779216593
|
||||
121.393777934967 264.938163801735
|
||||
121.250494388996 264.560044839685
|
||||
121.27600762075 264.081004008358
|
||||
121.464071659504 263.580622985666
|
||||
121.80844053453 263.138483449524
|
||||
122.302868275104 262.834167077845
|
||||
122.189766077457 261.832194074696
|
||||
122.181979565082 261.021435573404
|
||||
122.282919077335 260.356762692039
|
||||
122.495994953571 259.79304654867
|
||||
123.272197155414 258.787968948191
|
||||
123.842144159733 258.256349727219
|
||||
124.537868885456 257.645171716516
|
||||
123.748511819301 257.374903753107
|
||||
122.896247295795 257.195293023889
|
||||
122.020543841778 257.159872129267
|
||||
121.160869984089 257.322173669641
|
||||
120.386869324504 258.088989481037
|
||||
119.718418864666 259.185653522318
|
||||
118.521497158466 261.83279187948
|
||||
117.904690219222 263.115398987835
|
||||
117.21676209396 264.19211991102
|
||||
116.413544936238 264.929021045273
|
||||
115.954900518192 265.128184940373
|
||||
115.450870899616 265.192168786829
|
||||
115.166447786747 264.860210492914
|
||||
115.035494236408 264.45353658468
|
||||
115.103870777546 263.603164270227
|
||||
115.627354351936 263.351257219618
|
||||
115.963794617115 263.002400472467
|
||||
116.161179868637 262.580770030325
|
||||
116.267498402057 262.110541894739
|
||||
116.398888496814 261.120996549433
|
||||
116.519936649261 260.65003134281
|
||||
116.741871265827 260.227172448938
|
||||
117.68249836391 258.746419503992
|
||||
118.752872852741 257.396163537805
|
||||
118.087013749538 256.878038719004
|
||||
117.316247372089 256.564664438074
|
||||
116.494293002544 256.474790408914
|
||||
115.674869923053 256.627166345423
|
||||
114.843030652164 257.505357637709
|
||||
114.159901945053 258.523809507196
|
||||
112.940620331226 260.66729314596
|
||||
112.254889479039 261.635223999327
|
||||
111.41871329969 262.429213598078
|
||||
110.357302820442 262.970711484259
|
||||
109.718763164377 263.122229017024
|
||||
108.995869068561 263.181167199915
|
||||
109.045528045057 262.41154618532
|
||||
109.332010833679 261.738698556726
|
||||
109.782579278706 261.131522848909
|
||||
110.324495224415 260.558917596643
|
||||
111.391416994987 259.393012597864
|
||||
111.770946508406 258.7375099209
|
||||
111.950870899616 257.992171838587
|
||||
112.334840206562 257.454123571222
|
||||
112.82587185329 256.962295129602
|
||||
113.96187248653 256.155166223352
|
||||
112.279371170459 255.593667581385
|
||||
111.447777358947 255.509416892832
|
||||
110.485870747028 255.683166101282
|
||||
109.948712555824 256.31251813442
|
||||
109.536417631565 257.010728910273
|
||||
108.905995754657 258.517165735071
|
||||
108.233761457859 260.009354665583
|
||||
107.769201008735 260.689755573576
|
||||
107.158871082721 261.294173791712
|
||||
106.588244347034 261.194913461512
|
||||
106.091869739948 260.87216146261
|
||||
106.650041489063 259.970709398096
|
||||
106.873244671283 258.985538080042
|
||||
106.984871296344 256.801162317102
|
||||
107.596792666374 256.120214298075
|
||||
108.285495666919 255.562543466394
|
||||
109.715870289264 254.566161706751
|
||||
109.036246208606 253.821662500208
|
||||
108.226871876178 253.077163293665
|
||||
107.088714210449 253.755198552912
|
||||
106.104120163379 254.572917535608
|
||||
105.708725651859 255.057421222036
|
||||
105.398901431022 255.60476119787
|
||||
105.190373962877 256.224242582624
|
||||
105.09886970943 256.925170495813
|
||||
104.89808408743 257.382904275959
|
||||
104.625275163112 257.724856212442
|
||||
103.914868740497 258.128915384119
|
||||
103.070213107525 258.272349670237
|
||||
102.193870930134 258.290160730188
|
||||
102.207573322712 257.926836088007
|
||||
102.435494808613 257.598292901819
|
||||
102.71010389751 257.274436071222
|
||||
102.863869099079 256.925170495813
|
||||
102.9505883736 255.782791211908
|
||||
103.298119930683 254.731166436975
|
||||
103.925026087223 253.814541890924
|
||||
104.849869160114 253.077163293665
|
||||
106.069870380817 252.794416024988
|
||||
106.585464386402 252.48682196409
|
||||
106.935871509968 252.009170129602
|
||||
106.525791151582 251.672740116423
|
||||
106.100042848049 251.515244558161
|
||||
105.22249546474 251.596290185755
|
||||
103.509869007526 252.357162072962
|
||||
102.911275712906 252.846228435343
|
||||
102.408120064197 253.458669259851
|
||||
101.622871784626 254.839171960657
|
||||
101.872937647758 255.136575206821
|
||||
101.959527162967 255.47541697294
|
||||
101.737620739399 256.161164834803
|
||||
101.147839693485 256.663913085764
|
||||
100.774585930763 256.774005338257
|
||||
100.380871204792 256.751159265345
|
||||
100.088104514538 256.564915731256
|
||||
99.9744943661077 256.266917779749
|
||||
99.958870319782 255.55917318136
|
||||
100.489122500776 255.143538489645
|
||||
100.732511131225 254.659244611566
|
||||
100.765994934498 253.591788842981
|
||||
100.759738704322 253.062181725805
|
||||
100.873916117607 252.571024968927
|
||||
101.210351472853 252.145095959013
|
||||
101.870869068561 251.811172082727
|
||||
104.278870014606 250.296172693079
|
||||
104.104886202274 250.019433334177
|
||||
103.779495624958 249.793790414637
|
||||
103.374791769443 249.689085796183
|
||||
102.962868122516 249.77516134054
|
||||
102.208858577667 250.200904115742
|
||||
101.589228062092 250.737787082498
|
||||
101.082449166237 251.36429481179
|
||||
100.666994480549 252.058911874597
|
||||
100.023948101459 253.566412284677
|
||||
99.4878696483953 255.088164880579
|
||||
98.9816197437627 255.389165475672
|
||||
98.4198688549382 255.336165979212
|
||||
98.1039165539129 255.06768377096
|
||||
98.0694946331365 254.715293481653
|
||||
98.2958683056218 254.020171716516
|
||||
98.9904201162441 253.354261353319
|
||||
99.3969011587484 252.537027910059
|
||||
99.7856201214177 250.718543603723
|
||||
99.98784263259 249.852268650835
|
||||
100.341963557659 249.104622438257
|
||||
100.957975192128 248.543092921083
|
||||
101.398562617732 248.35321190924
|
||||
101.945869831501 248.235168054407
|
||||
101.701554922519 247.874419644182
|
||||
101.673228649555 247.307608201807
|
||||
101.827691702305 246.610389902895
|
||||
102.131744770466 245.858420923059
|
||||
102.552188543735 245.127357437914
|
||||
103.055823711811 244.492855623072
|
||||
103.60945096439 244.030571654146
|
||||
104.179870991169 243.816161706751
|
||||
104.821291951595 243.291337564295
|
||||
105.528245357929 242.966292932337
|
||||
106.250011710582 242.942182138269
|
||||
106.935871509968 243.320159509485
|
||||
106.428417114673 243.690194919413
|
||||
105.818495182453 243.860166147058
|
||||
105.190010933338 243.983637168711
|
||||
104.62686958736 244.214171960657
|
||||
103.983510164676 244.865406349008
|
||||
103.260744480549 245.657544687097
|
||||
103.010824499784 246.077361151283
|
||||
102.910541204868 246.497493579691
|
||||
103.016390679537 246.906305297916
|
||||
103.384869007526 247.292159631555
|
||||
103.708803465722 246.658101185863
|
||||
104.11390170282 246.091728999918
|
||||
105.119871048389 245.135419442957
|
||||
106.307340113579 244.369983032053
|
||||
107.580871967731 243.742171838587
|
||||
108.428620247303 243.863162591761
|
||||
108.806838361679 244.004006936853
|
||||
109.070869831501 244.338164880579
|
||||
108.634932903705 244.65714986593
|
||||
108.136371044574 244.899539544886
|
||||
107.108871845661 245.331161096399
|
||||
105.874355880676 246.016150548761
|
||||
105.115245727955 246.813541009729
|
||||
104.732448069511 247.81924255163
|
||||
104.62686958736 249.12916524679
|
||||
105.026422647892 249.286486819094
|
||||
105.310229448734 249.278479173487
|
||||
105.502137689052 249.140064671343
|
||||
105.625995068012 248.906165674036
|
||||
105.764948038517 248.291603639429
|
||||
105.917869953571 247.714171960657
|
||||
106.734900741039 246.87446530134
|
||||
107.630869297443 246.134790017908
|
||||
108.619838265835 245.651053264444
|
||||
109.153592480479 245.553882822102
|
||||
109.715870289264 245.579162195032
|
||||
109.955151168762 245.776885583704
|
||||
110.250120071827 245.895667627161
|
||||
110.470464198051 246.060947015589
|
||||
110.485870747028 246.398162439173
|
||||
109.150214342533 246.998321130579
|
||||
108.524187026678 247.478201105898
|
||||
107.965120701252 248.050166681116
|
||||
107.50233566588 248.69338174135
|
||||
107.165152220188 249.387010171717
|
||||
106.982890663801 250.110215857332
|
||||
106.984871296344 250.842162683313
|
||||
107.28324547237 251.283044412439
|
||||
107.439228920398 251.463591888254
|
||||
107.655868915973 251.537170007532
|
||||
108.361431269108 250.257667615717
|
||||
109.318619160114 249.119914605921
|
||||
110.462182669101 248.154286458795
|
||||
111.726871876178 247.391158654993
|
||||
112.044730572162 247.358228042429
|
||||
112.313745884357 247.478669717615
|
||||
112.620869068561 247.938170984095
|
||||
112.518357662616 248.46957902581
|
||||
112.271588472782 248.843323066538
|
||||
111.915459899364 249.09955166251
|
||||
111.48487034267 249.278413369959
|
||||
110.53990188068 249.564630344217
|
||||
110.095319775997 249.752282723492
|
||||
109.715870289264 250.023162439173
|
||||
109.457870749889 250.557148530786
|
||||
109.309370426594 251.149539544886
|
||||
109.070869831501 252.257171228235
|
||||
109.683401553093 252.911874130075
|
||||
110.414620308338 253.452294900721
|
||||
111.224964229522 253.866902187174
|
||||
112.074871448932 254.144164636438
|
||||
112.236324196814 253.38570000202
|
||||
112.29718324369 252.600445821588
|
||||
112.366120247303 251.065913751429
|
||||
112.498698210476 250.374808326071
|
||||
112.779682485519 249.773258283441
|
||||
113.27132307565 249.290349855726
|
||||
114.035869984089 248.95516927511
|
||||
114.926620869098 249.141662195032
|
||||
115.275340227543 249.388567045038
|
||||
115.500873951374 249.77516134054
|
||||
115.345216302334 250.314134671991
|
||||
115.001120953022 250.774169519251
|
||||
114.596650866924 251.206452443903
|
||||
114.259869007526 251.662170007532
|
||||
113.930493740497 253.126666620081
|
||||
113.787868885456 254.666167810266
|
||||
114.407808808742 255.137154414957
|
||||
115.100121883808 255.401044442957
|
||||
116.617870716511 255.55917318136
|
||||
116.552996067463 254.137775972193
|
||||
116.844370274006 252.788287713831
|
||||
117.4942449612 251.582989290064
|
||||
117.954323617874 251.056999042337
|
||||
118.504871754108 250.59416158468
|
||||
118.987525658814 250.749370734846
|
||||
119.334183631597 250.935227676933
|
||||
119.678433565555 251.387505843943
|
||||
119.655465124307 251.928237899845
|
||||
119.383121876178 252.534665658777
|
||||
118.561685232578 253.853575542276
|
||||
118.248278973757 254.520541295116
|
||||
118.156872181354 255.162170007532
|
||||
118.198937488852 255.707615956371
|
||||
118.527714042125 256.111358478372
|
||||
119.063443942128 256.379631921356
|
||||
119.726369289814 256.518670633142
|
||||
120.436732186137 256.534708961552
|
||||
121.114774732052 256.433981254404
|
||||
121.680739028512 256.22272185952
|
||||
122.054867176471 255.90716512472
|
||||
122.273181347309 254.544834688013
|
||||
122.405619053303 253.126536920374
|
||||
122.561040846763 252.460472896402
|
||||
122.84068146175 251.857304170435
|
||||
123.293103544174 251.342659786051
|
||||
123.966869739948 250.942168786829
|
||||
124.242917684971 250.84708960325
|
||||
124.500496296344 250.929292276209
|
||||
124.884869007526 251.364165857141
|
||||
124.676432995258 252.56772907049
|
||||
124.27712097591 253.824916436975
|
||||
124.146980492531 254.452525391882
|
||||
124.138433842121 255.068227842157
|
||||
124.307918636261 255.663586273497
|
||||
124.71187248653 256.230163171595
|
||||
125.925123600422 256.800792291468
|
||||
126.593435673176 256.935120656794
|
||||
127.268871693073 256.925170495813
|
||||
127.53687633401 256.271852150267
|
||||
127.505291728435 255.618511274164
|
||||
127.001744656025 254.330417230432
|
||||
126.758977128325 253.704991712873
|
||||
126.675010232387 253.098198964899
|
||||
126.864441437779 252.514702811544
|
||||
127.441868214069 251.959167077845
|
||||
128.177995113788 251.922290399378
|
||||
128.528479365764 251.966617181604
|
||||
128.85786858028 252.183166101282
|
||||
128.98015409535 252.590843215292
|
||||
128.939337877689 252.963586881464
|
||||
128.599869160114 253.64154012472
|
||||
128.302400259433 254.291558339899
|
||||
128.314083812891 254.629383220976
|
||||
128.509869007526 254.988174035852
|
||||
128.869701264559 255.294798507994
|
||||
129.167213110386 255.667810514276
|
||||
129.68936958736 256.459292962854
|
||||
129.971061227976 256.800911321943
|
||||
130.304526476322 257.055213048761
|
||||
130.718288837133 257.183772101705
|
||||
131.240871815143 257.148162439173
|
||||
133.226871876178 256.925170495813
|
||||
132.851370243488 255.115415170496
|
||||
132.727650551258 254.204914882486
|
||||
132.82986870235 253.250167444055
|
||||
133.091044349728 252.910889371937
|
||||
133.300199536739 252.484823062723
|
||||
133.689246563373 251.574918344324
|
||||
133.932537419854 251.192376240795
|
||||
134.250605849682 250.925638511484
|
||||
134.675151361285 250.825353309219
|
||||
135.237873463093 250.942168786829
|
||||
135.508543638645 251.095620229547
|
||||
135.579246906696 251.351539209192
|
||||
135.510263590275 251.626020505732
|
||||
135.361874012409 251.835158899134
|
||||
134.872424913703 252.263231768911
|
||||
134.588980464397 252.754713132685
|
||||
134.473138136922 253.293888464277
|
||||
134.486495403705 253.865043237513
|
||||
134.747198609768 255.040433004206
|
||||
135.063869862018 256.155166223352
|
||||
135.361319033561 256.775079354351
|
||||
135.785776524006 257.248227908914
|
||||
136.30928119844 257.581595822876
|
||||
136.903871921955 257.782167032068
|
||||
138.194466976581 257.812855079477
|
||||
138.834549037872 257.65693978936
|
||||
139.4338726086 257.396163537805
|
||||
138.868745235859 255.168416574305
|
||||
138.812167672573 254.07291729719
|
||||
139.085873035846 252.903167321985
|
||||
139.044638542591 252.392777755564
|
||||
139.046247868 251.752542093103
|
||||
139.12185934013 251.503234669273
|
||||
139.278670219837 251.364868953531
|
||||
139.540176658092 251.385246023243
|
||||
139.929874805866 251.612166955774
|
||||
140.28958196765 251.907282724684
|
||||
140.507293967663 252.227102353876
|
||||
140.712247280536 252.900165155237
|
||||
140.935764340816 253.549979284113
|
||||
141.176681025086 253.840738072699
|
||||
141.568874744831 254.095168664759
|
||||
141.720872311054 256.062415674036
|
||||
141.907216100155 257.055323198145
|
||||
142.337871937214 257.992171838587
|
||||
143.279169110714 258.384171321695
|
||||
144.392497448383 258.575917795008
|
||||
145.515013961254 258.488288238352
|
||||
146.028829349337 258.314981504982
|
||||
146.483875660358 258.042159631555
|
||||
145.711528806148 257.068646028345
|
||||
145.069121746479 256.006537988489
|
||||
144.780341414867 254.851240709131
|
||||
144.838463438807 254.237210228746
|
||||
145.068874744831 253.598159387415
|
||||
144.62053732401 253.264739796226
|
||||
144.459684876857 252.851175620859
|
||||
144.528801633177 252.423009857243
|
||||
144.770371822773 252.045785501306
|
||||
145.126879675446 251.785045548981
|
||||
145.540809421001 251.706332996195
|
||||
145.954645289241 251.875190838879
|
||||
146.310871509968 252.357162072962
|
||||
146.270370869098 253.089292123621
|
||||
146.061870960651 253.74716146261
|
||||
147.05221465057 254.618043020075
|
||||
147.837621120868 255.668170526331
|
||||
148.548402099071 256.788044050043
|
||||
149.314869312702 257.868163659876
|
||||
150.162512330471 258.175461604898
|
||||
151.105496792255 258.240792825525
|
||||
152.034417895733 258.064061477487
|
||||
152.839870838581 257.645171716516
|
||||
151.852308062969 256.818670585459
|
||||
151.195121197162 255.78291852743
|
||||
150.863809136806 254.579541995829
|
||||
150.853870777546 253.250167444055
|
||||
150.512499241291 253.061166360681
|
||||
150.207874683796 252.779159143274
|
||||
150.171656040607 252.433212831324
|
||||
150.326124576984 252.15504415304
|
||||
150.778873829303 251.662170007532
|
||||
151.200938372074 251.829241409605
|
||||
151.515952019153 252.092746808832
|
||||
151.927248386799 252.819293573206
|
||||
152.217606453357 253.662278249567
|
||||
152.591869739948 254.442168786829
|
||||
153.099512962757 255.30118449003
|
||||
153.767748264728 256.099542215174
|
||||
155.371876148639 257.570159509485
|
||||
156.390905289112 257.400103166407
|
||||
157.395872501789 257.157668664759
|
||||
158.38209143108 257.077980592554
|
||||
159.344875721393 257.396163537805
|
||||
158.960578231273 256.033835246866
|
||||
158.338998226581 254.746038034265
|
||||
157.494105367122 253.542054488962
|
||||
156.439869312702 252.431167199915
|
||||
156.46501584178 252.139253213709
|
||||
156.646278647838 251.903555467432
|
||||
156.941025180875 251.730132177179
|
||||
157.306622890888 251.625041559046
|
||||
158.079841641842 251.644091203516
|
||||
158.40219758278 251.78034789831
|
||||
158.62487450069 252.009170129602
|
||||
158.54236125773 252.482238456314
|
||||
158.593090681492 252.870967223947
|
||||
158.984871296344 253.467546060388
|
||||
159.581403879581 253.943186595743
|
||||
160.163875965534 254.442168786829
|
||||
162.000873951374 257.322173669641
|
||||
162.817122845112 257.433791711634
|
||||
163.763874439655 257.471160486048
|
||||
164.849997906147 257.747163369959
|
||||
165.404544143139 257.830604389017
|
||||
165.972874073444 257.744170739954
|
||||
166.212240455805 257.1427897659
|
||||
166.032310156284 256.555810287302
|
||||
165.559786258398 255.978603705471
|
||||
164.921371845661 255.406541421717
|
||||
163.653683809696 254.259335353678
|
||||
163.277816353498 253.674934372013
|
||||
163.24287071651 253.077163293665
|
||||
162.494248775898 252.474795892542
|
||||
162.240077523647 252.113185956781
|
||||
162.248875050007 251.612166955774
|
||||
162.658563761173 251.318376555746
|
||||
163.012576965748 251.219527318781
|
||||
163.315707592426 251.282279386824
|
||||
163.572748569904 251.473292901819
|
||||
163.967733292041 252.106744840448
|
||||
164.235874561725 252.853164270227
|
||||
165.4554057402 253.414371087854
|
||||
166.491374401508 254.287292077845
|
||||
167.318092135845 255.374148919886
|
||||
167.909870533405 256.577163293665
|
||||
168.634591607509 256.87496359617
|
||||
169.424373058735 256.853543832605
|
||||
170.938869862018 256.403167321985
|
||||
170.951590566097 255.731665447061
|
||||
170.687373547016 255.069165780847
|
||||
170.306906012951 254.434415176218
|
||||
169.970875172077 253.846160486048
|
||||
169.002249149738 253.061290338343
|
||||
168.678670553623 252.551151349848
|
||||
168.629871754108 251.959167077845
|
||||
168.239928586541 251.888723507231
|
||||
167.903574971615 251.701244428461
|
||||
167.446996120868 251.118289544886
|
||||
167.35445074564 250.794368639295
|
||||
167.370854644237 250.496522023981
|
||||
167.510047746955 250.26052714855
|
||||
167.785869984089 250.12216146261
|
||||
168.688621906696 250.289916589563
|
||||
169.045873073993 250.541513040369
|
||||
169.274876026569 250.942168786829
|
||||
169.192808149515 251.253115430181
|
||||
169.241967348514 251.443745687311
|
||||
169.607122806965 251.587291314905
|
||||
170.116654066501 251.619274213617
|
||||
170.516872791706 251.786162927454
|
||||
171.42362215942 252.665900304621
|
||||
172.148871807514 253.703792169397
|
||||
172.827622680126 254.788370206659
|
||||
173.594875721393 255.808166101282
|
||||
174.510047583042 256.121151759928
|
||||
175.478750614582 256.096543863123
|
||||
177.418873218952 255.73316915304
|
||||
177.42771589583 255.235086336439
|
||||
177.275671629368 254.792586400812
|
||||
176.646000294147 254.017287805384
|
||||
175.844015268741 253.293178632563
|
||||
175.1838726086 252.506164148157
|
||||
174.476498035846 252.415916040247
|
||||
174.171512512623 252.306762292688
|
||||
173.991871265827 252.009170129602
|
||||
174.302623180805 251.450791909998
|
||||
174.83687248653 251.11517293722
|
||||
175.578072143851 251.025549366777
|
||||
176.26965406364 251.223749711817
|
||||
176.906344933568 251.646504595583
|
||||
177.482871441303 252.230544641321
|
||||
178.434338120876 253.629402711695
|
||||
178.798731668053 254.31768198282
|
||||
179.081867603718 254.914168908899
|
||||
180.51237526363 254.615792825525
|
||||
181.235690025745 254.431961372202
|
||||
182.035877613483 254.318160608118
|
||||
181.624607948719 253.218849017923
|
||||
181.073746113239 252.226415231531
|
||||
180.401948837696 251.336357429331
|
||||
179.627872852741 250.544173791712
|
||||
179.605296997486 250.234263017481
|
||||
179.745750812946 249.982665613001
|
||||
180.198871998249 249.700164392298
|
||||
180.750604508577 249.826381101911
|
||||
181.199843553959 250.098823621576
|
||||
181.930624393879 250.895167901819
|
||||
182.670780806003 251.714760854547
|
||||
183.131739316641 252.016264214819
|
||||
183.699879078327 252.183166101282
|
||||
184.084246067463 252.726041391199
|
||||
184.202042250095 253.017494037455
|
||||
184.170872120319 253.325164392298
|
||||
185.685871509968 253.250167444055
|
||||
185.750922905414 252.813052732205
|
||||
185.730164824186 252.436332091396
|
||||
185.476765303074 251.831055476969
|
||||
185.016763089357 251.368302508896
|
||||
184.441248325763 250.982038095301
|
||||
183.841311155019 250.606227144306
|
||||
183.308041719852 250.174834564035
|
||||
182.932530162988 249.621825262611
|
||||
182.805866627155 248.881164148157
|
||||
183.324567375837 248.508855357473
|
||||
183.941387800632 248.516258313959
|
||||
184.614293215929 248.812364950483
|
||||
185.301248936115 249.306167199915
|
||||
186.54917254871 250.522826268976
|
||||
187.026071069895 251.063666954344
|
||||
187.348881153522 251.438170984095
|
||||
188.103248981891 251.646287515467
|
||||
188.838871387897 251.612166955774
|
||||
188.731433330236 250.958199605053
|
||||
188.468933729587 250.412244632547
|
||||
188.084841011224 249.947219773834
|
||||
187.612623600422 249.53604276449
|
||||
186.537688402591 248.766903236216
|
||||
185.511875538288 247.888167932337
|
||||
185.52449837154 247.329417779749
|
||||
185.602856068073 247.106014325922
|
||||
185.834873585163 246.994170739954
|
||||
186.376623748003 247.007386699026
|
||||
186.873923448978 247.122978284662
|
||||
187.780500797687 247.558913781946
|
||||
188.645264295994 248.097228124445
|
||||
189.5588726086 248.533172204798
|
||||
190.169998554645 249.315415933435
|
||||
190.448889641224 249.6857302931
|
||||
190.799869923053 249.949172571009
|
||||
191.085573760925 249.308977588718
|
||||
190.991483597217 248.759510829752
|
||||
190.619681803642 248.272810980385
|
||||
190.072250751911 247.820916726892
|
||||
188.858830360828 246.909699752634
|
||||
188.3970057649 246.394454404419
|
||||
188.167881397663 245.80216939718
|
||||
187.007627872883 245.389916971033
|
||||
186.52734580463 245.030978515451
|
||||
186.181873707233 244.51116903097
|
||||
186.160422710834 244.279924198692
|
||||
186.302965549885 244.143964126413
|
||||
186.559837727009 244.098449215
|
||||
186.881374744831 244.13853986532
|
||||
187.519785313068 244.45617945463
|
||||
187.737329868732 244.724049195354
|
||||
187.820881275593 245.058166101282
|
||||
188.068867115436 245.058166101282
|
||||
188.093994526325 244.545545175379
|
||||
188.180949119983 244.278967216318
|
||||
188.416874317585 244.089171960657
|
||||
188.734436420856 244.118274762934
|
||||
189.021625904499 244.263537957971
|
||||
189.229690937458 244.501618459528
|
||||
189.309879688678 244.80917318136
|
||||
189.269563732801 245.043443992441
|
||||
189.336311010776 245.216930940454
|
||||
189.688619999347 245.445537164514
|
||||
190.16205611652 245.622959688013
|
||||
190.551868824421 245.877166345423
|
||||
191.659370808063 247.180543496912
|
||||
192.562870411335 248.633163049524
|
||||
192.938801637052 248.406994819348
|
||||
193.171949712692 248.143950417345
|
||||
193.266796974598 247.534010484522
|
||||
192.961213318763 246.856898024385
|
||||
192.368999866901 246.166167810266
|
||||
191.603957740722 245.515374615496
|
||||
190.779888061939 244.958073213404
|
||||
190.010591952263 244.547818377321
|
||||
189.409870533405 244.338164880579
|
||||
189.667120365558 243.689410760706
|
||||
190.129871754108 243.096160486048
|
||||
190.799869923053 243.146163537805
|
||||
191.781840233265 244.15039785177
|
||||
192.807873157917 245.147788598841
|
||||
193.680154709278 246.242866113489
|
||||
193.996821848808 246.859703138178
|
||||
194.200870899616 247.540160730188
|
||||
194.564129261432 247.37578923971
|
||||
194.796879200397 247.044173791712
|
||||
194.737574575601 246.223557337826
|
||||
194.41095366901 245.600825145548
|
||||
193.901075301824 245.113140746658
|
||||
193.291998295246 244.697667672937
|
||||
192.667781470476 244.291569456165
|
||||
192.112483648716 243.832009628122
|
||||
191.710163651167 243.256151720589
|
||||
191.54488029903 242.501159265345
|
||||
191.800878672062 242.576400115793
|
||||
192.010378269611 242.547292306726
|
||||
192.285129217563 242.699868038004
|
||||
192.48189586228 242.933672293728
|
||||
192.736881641803 243.320159509485
|
||||
193.698282627521 243.978118970697
|
||||
194.604374317585 244.928294732874
|
||||
195.277967838703 246.030156209772
|
||||
195.472206263004 246.594053283041
|
||||
195.541874317585 247.143172815149
|
||||
195.572453169285 247.09313972265
|
||||
195.731001285969 247.059417321985
|
||||
195.774400346172 247.071406071589
|
||||
195.977004675327 247.29952509672
|
||||
197.174879459797 248.038537576502
|
||||
197.244438985716 248.080712723111
|
||||
197.463313726841 248.254011943643
|
||||
197.704878239094 248.449918344324
|
||||
197.764942316471 248.594449355905
|
||||
197.850880054889 248.95516927511
|
||||
197.922702429949 249.171430572575
|
||||
198.066795496402 249.591587856119
|
||||
198.426996616779 250.742791726892
|
||||
198.570706127344 251.323438986843
|
||||
198.641889242588 251.807183578318
|
||||
198.604346690832 252.118825837677
|
||||
198.421879200397 252.183166101282
|
||||
198.001622466503 251.940796985929
|
||||
197.824517635761 251.594950750177
|
||||
197.776249317585 250.643920495813
|
||||
197.693328647075 250.064283266371
|
||||
197.430045513569 249.432262494867
|
||||
196.880521325527 248.760631575888
|
||||
195.938877491413 248.062163904016
|
||||
195.21887627071 248.062163904016
|
||||
195.906389204918 248.655477598017
|
||||
196.492733864246 249.328290536707
|
||||
196.969742385803 250.066915586298
|
||||
197.329246906696 250.857665613001
|
||||
197.563079564033 251.686853483026
|
||||
197.663072494922 252.540792062586
|
||||
197.621057836471 253.40579421789
|
||||
197.428867725788 254.268172815149
|
||||
196.764150856195 253.59375093848
|
||||
196.32404628223 252.69385988981
|
||||
195.722002415119 250.702920511072
|
||||
195.362227318941 249.854497298305
|
||||
194.831392912327 249.265855148142
|
||||
194.470916623382 249.106862146115
|
||||
194.03058129376 249.058306619232
|
||||
193.498022185771 249.135352637326
|
||||
192.860874561725 249.353164270227
|
||||
193.557114301382 249.653296723669
|
||||
194.042532591282 250.101788595026
|
||||
194.369184492288 250.663155689543
|
||||
194.589125065265 251.301913812464
|
||||
194.917092470585 252.669666364496
|
||||
195.129229424654 253.327692404097
|
||||
195.442875294147 253.921172693079
|
||||
195.420877842365 254.920167520349
|
||||
195.306192068516 255.401385143106
|
||||
195.04488029903 255.808166101282
|
||||
194.630868313966 255.366066708868
|
||||
194.39022269672 254.84161956579
|
||||
194.182375339924 253.663291528528
|
||||
193.928027777134 252.508400991266
|
||||
193.629256902395 252.013250723188
|
||||
193.133869556843 251.612166955774
|
||||
192.307993320881 250.854920938318
|
||||
191.79975810474 250.662671401804
|
||||
191.221866993366 250.768172815149
|
||||
190.921475229917 251.187075093096
|
||||
190.903540281711 251.560403421228
|
||||
191.096800683199 251.902958586519
|
||||
191.42999496883 252.22954137594
|
||||
192.231139330326 252.893992975061
|
||||
192.556566475092 253.261463358705
|
||||
192.736881641803 253.672164514368
|
||||
193.030611125885 254.221695854967
|
||||
193.096060661731 254.798789575403
|
||||
192.894619373737 255.978663995569
|
||||
192.803978292404 256.55294461519
|
||||
192.837556747852 257.097787454431
|
||||
193.083479611335 257.598942473238
|
||||
193.629871754108 258.042159631555
|
||||
193.825622944294 258.824292733972
|
||||
193.863871960102 259.194588973825
|
||||
193.629871754108 259.53216512472
|
||||
193.128486303745 259.272023275202
|
||||
192.764254002033 258.849040582483
|
||||
192.140873341022 257.868163659876
|
||||
191.858859716116 257.236263170546
|
||||
191.742701200901 256.582460477655
|
||||
191.693746952472 255.289538934534
|
||||
191.603849945722 254.690615310972
|
||||
191.36560550159 254.150179937189
|
||||
190.900462983309 253.688330426519
|
||||
190.129871754108 253.325164392298
|
||||
189.534089950977 252.986663177317
|
||||
188.770122913776 252.70666272909
|
||||
188.009531883655 252.661412074869
|
||||
187.684115259109 252.781895741527
|
||||
187.423878101764 253.027160241907
|
||||
187.985561518131 254.643897130793
|
||||
188.754621891437 256.186290338343
|
||||
189.416808752475 257.775369718378
|
||||
189.609621344267 258.625238552397
|
||||
189.657871632038 259.53216512472
|
||||
189.931126026569 260.133918359583
|
||||
189.905872730671 260.773162439173
|
||||
189.606054308025 261.033577825581
|
||||
189.354146419225 261.173382207458
|
||||
188.977861074863 261.144027068918
|
||||
188.744614360986 260.790835246151
|
||||
188.622003940998 260.219544961756
|
||||
188.579082636295 258.845621898477
|
||||
188.593967078386 258.254465564793
|
||||
188.589878467975 257.868163659876
|
||||
187.544744877277 255.97228772909
|
||||
186.405872730671 254.095168664759
|
||||
186.042839257179 254.30370391876
|
||||
185.610218910633 254.358325078791
|
||||
184.677124409137 254.265418603723
|
||||
184.247103659569 254.247687712019
|
||||
183.888402847706 254.335636213129
|
||||
183.636248676239 254.59416247875
|
||||
183.525867847858 255.088164880579
|
||||
184.153951494156 255.721615537708
|
||||
184.585101990162 256.422261073893
|
||||
184.845792023597 257.178171917503
|
||||
184.962494282184 257.977418496912
|
||||
184.869826225696 259.658200576609
|
||||
184.518879322468 261.369170739954
|
||||
184.764768986164 261.777758434122
|
||||
185.126999287067 262.107411935633
|
||||
185.377666859089 262.465192153757
|
||||
185.389944819866 262.688086315697
|
||||
185.288868336139 262.958159997766
|
||||
184.52162399715 263.252666070764
|
||||
184.118590502201 263.219450071161
|
||||
183.773868946491 263.007171228235
|
||||
183.363065598665 262.359424903696
|
||||
183.242933420597 261.716964319055
|
||||
183.510370640217 260.431541040247
|
||||
183.847556738315 259.118182733362
|
||||
183.814610658346 258.440803363626
|
||||
183.525867847858 257.744170739954
|
||||
182.96124496883 256.884542062586
|
||||
182.284870533405 256.081161096399
|
||||
181.335290102421 256.105054214304
|
||||
180.388243107258 255.994042947596
|
||||
179.501761106907 256.032093837564
|
||||
179.09936684197 256.195757135456
|
||||
178.733875660358 256.503173425501
|
||||
179.21279707378 257.15484563977
|
||||
179.524374393879 257.853686645334
|
||||
179.68520155376 258.586301669186
|
||||
179.71187248653 259.339295938318
|
||||
179.429121403156 260.852843120401
|
||||
178.8088726086 262.287170007532
|
||||
178.525298057256 262.62677670986
|
||||
178.560590414463 262.969278409784
|
||||
179.094370274006 263.628043725794
|
||||
179.346154986082 263.926845803564
|
||||
179.423401026188 264.193619802301
|
||||
179.202756999193 264.419634952848
|
||||
178.560871509968 264.596160486048
|
||||
178.035511760174 264.563493802851
|
||||
177.561246303974 264.37004049093
|
||||
177.17079308456 264.041398122614
|
||||
176.896870045124 263.603164270227
|
||||
176.941793112217 261.976012304132
|
||||
176.791246799885 260.416171624964
|
||||
176.631513742862 258.87957961828
|
||||
176.648876575885 257.322173669641
|
||||
175.749484686313 257.454337671106
|
||||
174.74049988216 257.523788049524
|
||||
173.698702005802 257.597930505579
|
||||
172.700870899616 257.744170739954
|
||||
173.172788111625 258.562743052547
|
||||
173.304826168476 259.424123599832
|
||||
173.211043683944 260.310558482712
|
||||
173.005499271808 261.204293802088
|
||||
172.802251545845 262.087575658863
|
||||
172.715359119831 262.94265015394
|
||||
172.858880607544 263.751763388222
|
||||
173.34687462276 264.49716146261
|
||||
173.357450990139 264.881884172266
|
||||
173.265746502338 265.192168786829
|
||||
173.053105143963 265.390701844995
|
||||
172.700870899616 265.440169885462
|
||||
172.176987407861 265.247643366163
|
||||
171.842232374607 264.914902761286
|
||||
171.65295356339 264.473951831167
|
||||
171.565498737751 263.956794336145
|
||||
171.521452097355 262.821874692743
|
||||
171.360874561725 261.766173913782
|
||||
171.15526419705 261.243981525009
|
||||
171.061685232578 260.694203689402
|
||||
170.997621921955 259.578172281092
|
||||
170.920637784658 259.045059010094
|
||||
170.742685465275 258.55064089567
|
||||
170.410515068231 258.111488088673
|
||||
169.870876697956 257.744170739954
|
||||
169.146780995784 257.629702403849
|
||||
168.452872662006 257.741170480555
|
||||
167.828714637218 258.034138992136
|
||||
167.313869862018 258.464171960657
|
||||
167.652372745929 259.900922372644
|
||||
167.708465723453 260.695046737497
|
||||
167.561870960651 261.468169763391
|
||||
165.898876575885 264.596160486048
|
||||
166.333123592792 265.586164071863
|
||||
166.526905087887 266.066257789438
|
||||
166.543873218952 266.558166101282
|
||||
166.284463701902 266.821791156834
|
||||
165.98921790546 266.907291248148
|
||||
165.358623890339 266.68566663534
|
||||
164.786904005466 266.176792457407
|
||||
164.408871082721 265.664168908899
|
||||
164.336720092354 265.278974070852
|
||||
164.39434197372 264.965919568842
|
||||
164.756873516498 264.472419336145
|
||||
165.212404040752 264.016043737238
|
||||
165.386274648963 263.749395027464
|
||||
165.476871876178 263.429168298548
|
||||
164.871872333942 261.384542062586
|
||||
164.691340832172 260.270026042765
|
||||
164.731869129596 259.060165002649
|
||||
163.022122768818 258.476790979212
|
||||
162.110060243068 258.382776334589
|
||||
161.181873707233 258.563170984095
|
||||
160.829952417074 258.927526190584
|
||||
160.610124735294 259.312201097315
|
||||
160.443375019489 260.140166833704
|
||||
160.434874205051 261.042381837671
|
||||
160.337871937214 262.014159753626
|
||||
158.872875599323 265.093169763391
|
||||
159.290068848191 265.03528051049
|
||||
159.603247193752 265.196884467905
|
||||
159.808801187335 265.519505008762
|
||||
159.903121380268 265.944665506189
|
||||
159.88259832388 266.413889333313
|
||||
159.7436225695 266.86869986326
|
||||
159.482584668456 267.250620469158
|
||||
159.095875172077 267.501174524134
|
||||
158.660744659735 267.307568020826
|
||||
158.317081911622 267.05679465801
|
||||
157.865030793606 266.408766820734
|
||||
157.661463989077 265.607129946058
|
||||
157.628123669086 264.701922967737
|
||||
157.759091166912 262.780954435175
|
||||
157.766883326827 261.865270748442
|
||||
157.631870655475 261.046172693079
|
||||
158.025495914875 259.593917444055
|
||||
158.312074570118 258.909507825678
|
||||
158.698871998249 258.290160730188
|
||||
158.000340132175 258.064226463144
|
||||
157.206371693073 258.101167276209
|
||||
155.545872120319 258.563170984095
|
||||
155.345503358303 258.863169058865
|
||||
155.0881694836 259.053105190103
|
||||
154.453747181354 259.202916696375
|
||||
153.744886784015 259.212855651682
|
||||
153.063869862018 259.283172204798
|
||||
152.859058080373 260.261898621624
|
||||
152.524496225773 261.182746723001
|
||||
151.691872028766 262.935792520349
|
||||
151.017496733127 264.71227867872
|
||||
150.880746005235 265.662427231377
|
||||
150.952869800983 266.682174279993
|
||||
150.930521501361 267.001462861603
|
||||
150.794137744365 267.248435333078
|
||||
150.294248012958 267.503541543787
|
||||
149.683168916164 267.403712108438
|
||||
149.407798452435 267.207015022343
|
||||
149.190868763385 266.905166223352
|
||||
149.185464171825 266.52893002302
|
||||
149.280372051655 266.203790262049
|
||||
149.537868885456 265.614165857141
|
||||
149.565997509418 262.386787011927
|
||||
149.799857406078 260.880302980249
|
||||
150.054301036654 260.182368471926
|
||||
150.431873707233 259.53216512472
|
||||
150.003790183125 259.241331919735
|
||||
149.497764615474 259.049732044046
|
||||
148.340247539936 258.914170816248
|
||||
147.1360428614 259.025358512705
|
||||
146.061870960651 259.283172204798
|
||||
145.276723532139 259.940378203695
|
||||
144.751309780536 260.700277402704
|
||||
144.410301832615 261.532904520338
|
||||
144.178371815143 262.40829427511
|
||||
143.740434078632 264.167500570124
|
||||
143.383770613132 264.991386547392
|
||||
142.834873585163 265.738174035852
|
||||
143.059286611287 266.207230668222
|
||||
143.181931195913 266.599809452598
|
||||
143.175340799747 267.169965102976
|
||||
142.921953914819 267.477504238193
|
||||
|
|
@ -0,0 +1,643 @@
|
|||
3
|
||||
597
|
||||
134.736468231438 354.909490555232
|
||||
134.616513168572 354.396959811156
|
||||
134.337839996575 353.944991558497
|
||||
133.909729873894 353.726273208564
|
||||
133.642536318062 353.758347563153
|
||||
133.341463958977 353.913492172664
|
||||
132.697050368546 354.325671970551
|
||||
132.004227554558 354.521992414897
|
||||
130.522337829827 354.523742645686
|
||||
128.99376193261 354.432117670482
|
||||
128.242581403015 354.511719107335
|
||||
127.516467010735 354.760492294734
|
||||
125.549338257073 354.940866917079
|
||||
124.603133117913 354.809288650458
|
||||
124.155654942749 354.600325546866
|
||||
123.731463348625 354.262491196101
|
||||
124.425782943277 353.153720496861
|
||||
125.248209064959 352.227169058924
|
||||
126.184441896288 351.46897799213
|
||||
127.220181619881 350.865288406318
|
||||
128.341128418354 350.402241411326
|
||||
129.532982474325 350.065978116994
|
||||
130.78144397041 349.842639633162
|
||||
132.072213089226 349.718367069667
|
||||
134.723474925516 349.711584143048
|
||||
137.37236944413 349.93475821585
|
||||
139.904498106001 350.277018166786
|
||||
142.205462372063 350.627492874568
|
||||
142.787519401072 350.658617444044
|
||||
143.174740946053 350.484992056792
|
||||
143.400947338103 350.153866730338
|
||||
143.499958908318 349.712491482203
|
||||
143.451678907631 348.687991290992
|
||||
143.300463592766 347.789491623347
|
||||
142.949247067927 346.910989165013
|
||||
142.441680109261 346.130537718242
|
||||
141.812754636763 345.429469287103
|
||||
141.097462570427 344.789115875667
|
||||
139.54774633622 343.615882128184
|
||||
138.072466766594 342.461492508357
|
||||
135.705545818566 343.662773161834
|
||||
133.329340851067 344.975991695826
|
||||
132.111536478756 345.476237810855
|
||||
130.859946644066 345.76646056742
|
||||
129.564083194493 345.767324022656
|
||||
128.213457977532 345.399492233699
|
||||
127.570575242995 345.502064436381
|
||||
126.917133009194 345.753382652705
|
||||
125.611336624382 346.363866775935
|
||||
124.975365763663 346.55383750767
|
||||
124.361601984261 346.554163902705
|
||||
123.778236931322 346.280248373454
|
||||
123.233462249993 345.647493332332
|
||||
122.561512565373 345.583762243097
|
||||
121.890067493675 345.678773492282
|
||||
120.551081573723 346.046241730159
|
||||
119.884735917805 346.169308080976
|
||||
119.221285259484 346.152335494464
|
||||
118.561327194927 345.920628651684
|
||||
117.905459320305 345.399492233699
|
||||
115.913454925774 345.996492355769
|
||||
115.79042542739 345.440820270856
|
||||
115.517208149789 344.893915399616
|
||||
114.647710358856 343.824069350665
|
||||
112.508962547539 341.763866394465
|
||||
111.74971293485 340.764157697266
|
||||
111.559181790931 340.269855839839
|
||||
111.537213122605 339.778476327365
|
||||
111.715681955351 339.289434672972
|
||||
112.126463314651 338.802146389788
|
||||
112.801432225986 338.31602699094
|
||||
113.772463714836 337.830491989558
|
||||
115.940058147667 337.991304367488
|
||||
118.079714691399 337.886241882747
|
||||
120.144744312523 337.417054146235
|
||||
121.134683704136 337.015210061973
|
||||
122.088457977532 336.485490768855
|
||||
123.356441503523 336.61404316098
|
||||
124.521194135903 336.505724757617
|
||||
125.600798076151 336.203695609873
|
||||
126.613335525749 335.751115768855
|
||||
128.509539758919 334.566944211429
|
||||
130.354464447258 333.298490494197
|
||||
130.62741676545 332.495709865992
|
||||
130.746338760613 331.5809917149
|
||||
130.669323599098 330.666273563807
|
||||
130.354464447258 329.863492935603
|
||||
129.567917978523 329.425930112307
|
||||
128.69258967614 329.203242271846
|
||||
127.826448118447 328.924680083697
|
||||
127.427437549589 328.679836943453
|
||||
127.067461883782 328.319494217341
|
||||
127.516467010735 326.32748982281
|
||||
126.60335675454 326.248816579287
|
||||
125.704588806389 326.03486344189
|
||||
124.890009319542 325.606223433917
|
||||
124.229464447258 324.883489578669
|
||||
124.280025160073 324.522789209788
|
||||
124.419261848686 324.220506637996
|
||||
124.889090454338 323.763116806453
|
||||
126.071459686516 323.24049183697
|
||||
128.045588171242 322.72757002682
|
||||
130.061715042351 322.200866669124
|
||||
131.005254274367 321.811204045718
|
||||
131.862964784859 321.272724598353
|
||||
132.602737134455 320.536971181338
|
||||
133.192461883782 319.555486648982
|
||||
133.097791349648 318.915316790049
|
||||
132.918839370964 318.354364365046
|
||||
132.590447580574 317.895973890727
|
||||
132.047457611321 317.563489883845
|
||||
131.321379011629 317.762583940928
|
||||
130.693444406746 318.138490646785
|
||||
129.61983576989 319.212991684382
|
||||
128.602288877724 320.371492355769
|
||||
128.044431453703 320.852398603862
|
||||
127.416460907219 321.198492020076
|
||||
126.08184299445 321.365844979589
|
||||
124.740147983788 321.398444026416
|
||||
122.100962555168 321.37911507458
|
||||
120.836190080403 321.487054422205
|
||||
119.629776394127 321.779974549716
|
||||
118.498080467938 322.337809130257
|
||||
117.45746127343 323.24049183697
|
||||
116.706987016035 323.172709356701
|
||||
116.051539948343 322.94990545482
|
||||
115.476459931715 322.599144581412
|
||||
114.967086827515 322.147491186564
|
||||
114.086820801852 321.049764632886
|
||||
113.293460762261 319.873241394465
|
||||
112.469725599645 318.834437071984
|
||||
112.009817000611 318.434340629434
|
||||
111.49833420491 318.149867266124
|
||||
110.920617073907 318.008081432139
|
||||
110.262005468963 318.036047577565
|
||||
109.507839251442 318.260830152487
|
||||
108.643458282707 318.70949360699
|
||||
107.756882107018 319.34239837498
|
||||
107.075335418938 320.078241318171
|
||||
106.864036416767 320.499354481404
|
||||
106.767100727318 320.963710039561
|
||||
106.805563664196 321.477143943017
|
||||
107.000460541008 322.045492142146
|
||||
107.344176164029 322.500684171622
|
||||
107.834867989777 322.941849678462
|
||||
108.930461799858 323.838115662043
|
||||
109.372004559396 324.321223407691
|
||||
109.633805072067 324.846319168513
|
||||
109.634183725475 325.427406578963
|
||||
109.291460907219 326.078489273494
|
||||
108.689460998533 326.651365786498
|
||||
108.00458637452 327.160692184871
|
||||
106.614962494133 328.126365631526
|
||||
106.024587994574 328.651548176711
|
||||
105.580088293312 329.250851601069
|
||||
105.338650768755 329.958693653052
|
||||
105.357462799309 330.809492081111
|
||||
106.100542104004 331.533521681731
|
||||
106.670839226006 332.383739918178
|
||||
106.820947921036 333.28083386988
|
||||
106.6611171571 333.722173951273
|
||||
106.303461944817 334.145490616267
|
||||
105.779321586846 334.778944283431
|
||||
105.133587753533 335.178865879481
|
||||
103.664462005852 335.689489334529
|
||||
103.405463135002 335.158490150874
|
||||
103.272463714836 334.580990761226
|
||||
103.216463958977 333.547491043513
|
||||
102.405018603562 332.811808637982
|
||||
101.738275921105 332.031161457007
|
||||
100.689461624382 330.37936350674
|
||||
99.7711471674425 328.680878668731
|
||||
98.6844586489184 327.024488419002
|
||||
98.9340847936852 326.306736111348
|
||||
99.3925855514986 325.754709452098
|
||||
100.539461052178 324.895740478938
|
||||
101.029460867999 324.462751865094
|
||||
101.33158544278 323.943396299785
|
||||
101.346647312997 323.274650633042
|
||||
101.215533651544 322.864561777269
|
||||
100.975459015129 322.3934917149
|
||||
100.025632446764 322.368326157039
|
||||
99.0804115889055 322.620239227717
|
||||
97.2038334963305 323.458238571589
|
||||
96.2724995074255 323.79579350323
|
||||
95.3458177206499 323.913364380305
|
||||
94.4237997589094 323.686685532039
|
||||
93.5064572451098 322.991491287654
|
||||
93.6115043518526 322.355770080989
|
||||
93.7865828630907 321.678237884944
|
||||
93.8215985653383 321.010081261104
|
||||
93.5064572451098 320.402486771052
|
||||
92.7935083267672 319.936223119204
|
||||
92.0620879290087 319.362614601558
|
||||
91.5176024792177 318.686442702716
|
||||
91.3796498683674 318.311389699285
|
||||
91.3654584047777 317.912488907283
|
||||
92.1932086107714 317.370864838069
|
||||
92.9084576723559 316.717489212459
|
||||
92.5112406370623 315.185365289157
|
||||
92.0437096712572 313.611239403193
|
||||
91.913478976248 312.824480756824
|
||||
91.921552812813 312.046487658923
|
||||
92.1198921856863 311.283682122534
|
||||
92.560458099602 310.542486160701
|
||||
93.0658665058596 310.878865211909
|
||||
93.6929606554491 310.990991562312
|
||||
94.3388045189364 310.878865211909
|
||||
94.9004620668871 310.542486160701
|
||||
95.3024705705626 310.114232271617
|
||||
95.5860253927691 309.655004948085
|
||||
95.865462219475 308.669364899104
|
||||
95.8741490004046 307.637035816615
|
||||
95.7474621889574 306.609487503474
|
||||
95.5843506754769 305.749551547398
|
||||
95.311168065427 304.973391607111
|
||||
94.4984917995913 303.624534457629
|
||||
93.4372378793938 302.467185422485
|
||||
92.2552107927782 301.405613869136
|
||||
91.0802150276882 300.344089165037
|
||||
90.0400550720675 299.186880677646
|
||||
89.6104774252904 298.542479192545
|
||||
89.2625354138596 297.838257774418
|
||||
89.0122045987679 297.062250094195
|
||||
88.8754605410082 296.20248982281
|
||||
91.2154645082934 294.309492081111
|
||||
91.7065436152203 294.535263240045
|
||||
92.1456036922915 294.901038378184
|
||||
92.9400881884081 295.753866165584
|
||||
93.3317233232243 296.091551601594
|
||||
93.7437608597262 296.270506590312
|
||||
94.1943061557991 296.216047525113
|
||||
94.7014645693285 295.853490799373
|
||||
95.7035845873339 292.78486344189
|
||||
95.8563523200733 291.998809769457
|
||||
95.8848197815401 291.19697102875
|
||||
95.7463892904503 290.375234052246
|
||||
95.3984631655199 289.529485672419
|
||||
96.1518851873858 289.32328328461
|
||||
96.7930878756029 288.813612907832
|
||||
97.8884610292895 287.537488907283
|
||||
98.3364590761645 284.25148579449
|
||||
99.1744443533404 283.872392505114
|
||||
100.073084747551 283.535487144893
|
||||
100.850412046669 283.095832436984
|
||||
101.136718219279 282.792181178635
|
||||
101.324458038567 282.408491104548
|
||||
100.610771333931 282.004879802173
|
||||
99.7992104647143 281.792612999385
|
||||
98.9782740232928 281.813784211581
|
||||
98.2364606020434 282.110486954158
|
||||
96.9580056277497 283.1566387412
|
||||
95.9631326553805 284.337004869883
|
||||
95.199330022691 285.627081572717
|
||||
94.6140860674364 287.00236508221
|
||||
93.7692275402529 289.910537451213
|
||||
93.0084637758715 292.86549183697
|
||||
92.6221810785515 292.528913810556
|
||||
92.0941489098055 292.366804450457
|
||||
90.8112105486376 292.274241417354
|
||||
90.1554915515167 292.197912588423
|
||||
89.556397473572 292.004302113955
|
||||
89.0635219124539 291.620472415989
|
||||
88.7264584658129 290.97348591656
|
||||
88.7943413165791 290.256545856302
|
||||
88.9520836231692 289.503956645434
|
||||
89.2617091295702 287.992238014644
|
||||
89.2758735922558 287.283312216108
|
||||
89.1044600365145 286.639144509738
|
||||
88.6786090937836 286.084836706226
|
||||
87.9294613955004 285.645490616267
|
||||
87.2951375303252 285.480674653953
|
||||
86.7314306852801 285.215909927791
|
||||
86.2447393593771 284.861590891784
|
||||
85.8414620516283 284.428111999934
|
||||
85.5279972610457 283.925867706244
|
||||
85.3107434866411 283.365252464717
|
||||
85.1904629824145 282.110486954158
|
||||
86.9207123873217 281.512738197749
|
||||
87.6691180822832 281.073801368182
|
||||
88.2774609682543 280.466489761775
|
||||
88.7490849850161 280.311129420703
|
||||
89.2859610674364 280.305113762324
|
||||
89.8040874359591 280.243034928744
|
||||
90.2194623110277 279.919485062068
|
||||
90.1425675955994 279.33384042949
|
||||
89.9309304115755 278.773941248362
|
||||
89.2177104113085 277.740613907283
|
||||
88.3083658573611 276.837972372477
|
||||
87.4314602968676 276.084485977595
|
||||
87.7721794006808 275.891661256259
|
||||
87.9921483156664 275.624128788417
|
||||
88.1842106935961 274.93961331219
|
||||
88.2363976595385 274.180284946864
|
||||
88.3774594423754 273.495489090388
|
||||
90.1637114641649 271.460238426631
|
||||
92.0624646303637 269.462484329646
|
||||
92.2078211662752 269.898314684337
|
||||
92.1805857775194 270.371362656062
|
||||
92.1812897083742 270.862972944682
|
||||
92.4104642031176 271.354490250056
|
||||
93.3327575383169 271.290117308205
|
||||
94.1120707151873 270.960818379825
|
||||
94.7921732721312 270.442448928659
|
||||
95.4168347475512 269.810864418452
|
||||
96.6749126074297 268.511472075885
|
||||
97.3958680686934 267.995375171011
|
||||
98.2364606020434 267.669485062068
|
||||
100.363017460464 267.228535413449
|
||||
102.428226744889 266.624753683513
|
||||
106.484336769341 265.211114853328
|
||||
108.530104598163 264.5424681899
|
||||
110.624259030579 263.993410318797
|
||||
112.794233610986 263.634546458428
|
||||
115.067461883782 263.536481827205
|
||||
115.390959655998 261.737865417903
|
||||
115.753429329155 260.938723772471
|
||||
116.054323589562 260.611157655423
|
||||
116.461459076164 260.349485367244
|
||||
117.009563719986 261.097417711919
|
||||
117.166588699578 261.8792526421
|
||||
117.055112397431 262.686798512643
|
||||
116.797713196038 263.511863678401
|
||||
116.335459625481 265.181785314982
|
||||
116.375762021301 266.010258495515
|
||||
116.760455047844 266.823484390681
|
||||
117.880459701775 267.513988464778
|
||||
118.314649259804 267.978299826091
|
||||
118.414485102652 268.270900070374
|
||||
118.403460418938 268.615484207576
|
||||
118.456658816097 269.211302578156
|
||||
118.27760258889 269.824018686717
|
||||
117.656836426018 270.999738663142
|
||||
117.432181572674 271.512539803689
|
||||
117.409382259606 271.94183322758
|
||||
117.696966027973 272.262517571156
|
||||
117.991066424309 272.374287161683
|
||||
118.403460418938 272.449491470759
|
||||
119.355099087713 272.088581278627
|
||||
120.330057775734 272.072472899859
|
||||
122.275216018913 272.530863731807
|
||||
123.208055978773 272.733464017218
|
||||
124.089496767281 272.737068265384
|
||||
124.900858586786 272.405727013653
|
||||
125.274422446398 272.071967618247
|
||||
125.623461639641 271.603490799373
|
||||
125.765258228539 270.812893837398
|
||||
125.71083728051 270.022485702937
|
||||
125.275469696282 268.516485184138
|
||||
124.662077581642 268.27523538441
|
||||
124.104840194939 267.931236236995
|
||||
123.622415697335 267.493861883586
|
||||
123.233462249993 266.972486465877
|
||||
123.200286125897 265.863791316455
|
||||
123.321692859886 264.713049858516
|
||||
123.78783313012 262.341489761775
|
||||
124.151039516686 259.969929665034
|
||||
124.143778896092 258.819188207095
|
||||
123.930468475579 257.710493057673
|
||||
124.506095415114 256.65383416385
|
||||
125.182608282326 255.633912771647
|
||||
126.588589584587 253.608612030452
|
||||
127.193206912039 252.555397450631
|
||||
127.649007951973 251.443249910777
|
||||
127.893567150591 250.248251795476
|
||||
127.864458954094 248.946485489314
|
||||
128.696370845793 247.681423216765
|
||||
129.319993650673 246.285661190455
|
||||
130.360215103386 243.382116287654
|
||||
130.985735302923 242.014372616713
|
||||
131.820809519051 240.796007603114
|
||||
132.34957337579 240.264723218685
|
||||
132.969898527621 239.797040849631
|
||||
133.694842571525 239.401712946301
|
||||
134.537463104485 239.087491959041
|
||||
135.359450733422 238.379456728404
|
||||
135.924841797112 237.456737488215
|
||||
136.294292843102 236.440643042033
|
||||
136.528460418938 235.452482193416
|
||||
136.243180668114 235.042577713435
|
||||
136.18646517968 234.525236099666
|
||||
136.180468475579 233.410490005916
|
||||
135.26453339508 233.214220575695
|
||||
134.434079712389 233.174596219962
|
||||
133.680064918606 233.275573886638
|
||||
132.99344650483 233.501110523646
|
||||
132.365181962161 233.835163078909
|
||||
131.786228781698 234.26168850035
|
||||
130.740086471794 235.327985733455
|
||||
128.841667806862 237.864360302394
|
||||
127.844711309431 239.077748804992
|
||||
126.719469940422 240.083478897517
|
||||
126.531453346966 240.714140623515
|
||||
126.475918209313 241.449826210444
|
||||
126.451838409661 243.021486252253
|
||||
126.328066801785 243.750069349711
|
||||
126.026322757958 244.368893593257
|
||||
125.468992805241 244.824263304179
|
||||
125.070228902755 244.973872810309
|
||||
124.578463470696 245.062482803767
|
||||
124.180497562645 245.926267832225
|
||||
123.824717437981 246.81798931927
|
||||
123.31031075692 247.541708677714
|
||||
122.930868601559 247.779336750214
|
||||
122.43646517968 247.901487320369
|
||||
121.98335186219 248.052297085231
|
||||
121.459835922478 248.063234299128
|
||||
121.001382505654 248.167549580043
|
||||
120.838887101172 248.32761481375
|
||||
120.743456756829 248.598493545955
|
||||
120.535072242974 249.749992102092
|
||||
120.15859118676 250.901489227717
|
||||
119.883964931725 251.413019358819
|
||||
119.539295112847 251.847487657969
|
||||
119.115241920708 252.179206967061
|
||||
118.602465545891 252.382490127986
|
||||
117.658194696663 252.250335186427
|
||||
116.797833359001 251.884740799373
|
||||
115.956037199257 251.444519489711
|
||||
115.067461883782 251.08848378033
|
||||
114.553394859789 251.777962922757
|
||||
114.317179834603 252.609250276988
|
||||
114.220711624382 254.442859619563
|
||||
114.131661361216 255.317986607259
|
||||
113.86286894059 256.080531805461
|
||||
113.299935823439 256.666897713845
|
||||
112.872416960208 256.874139215504
|
||||
112.328463470696 257.013486832087
|
||||
112.047541508584 256.553165059244
|
||||
111.747588222979 256.224925338929
|
||||
111.098462736366 255.895551413005
|
||||
110.396837121008 255.887083768552
|
||||
109.658461487053 256.061241119807
|
||||
108.134460603951 256.404305666392
|
||||
107.380335575102 256.296650290196
|
||||
106.652460968254 255.818494766658
|
||||
105.467931425331 256.950054377025
|
||||
104.124962723015 258.034740417903
|
||||
102.800742304085 259.194050520366
|
||||
101.672457611321 260.549482315486
|
||||
101.287194049118 260.341211408084
|
||||
100.942148601769 260.013936966365
|
||||
100.309712326287 259.217111557429
|
||||
99.6491493341906 258.588474243586
|
||||
99.2689454910738 258.471434920733
|
||||
98.8344601747973 258.557493179744
|
||||
98.6903377139402 259.153280336117
|
||||
98.4706643429978 259.643540024465
|
||||
97.8478367683871 260.36611768574
|
||||
97.0523212460263 260.842507540887
|
||||
96.1704615709765 261.189990967219
|
||||
95.2886015382988 261.525849342053
|
||||
94.4930849430544 261.967364042705
|
||||
93.8702555803044 262.631816446488
|
||||
93.6505810470713 263.084294717466
|
||||
93.5064572451098 263.63648793072
|
||||
92.4776162115319 264.388501181906
|
||||
91.3075993416292 264.919346183246
|
||||
88.8380850908739 265.721360176509
|
||||
87.6856112090332 266.194443538492
|
||||
86.6860084888918 266.85018739075
|
||||
86.266506236179 267.278106121054
|
||||
85.9127886799557 267.789548918312
|
||||
85.6340447889102 268.397135430654
|
||||
85.4394635317309 269.113485306209
|
||||
85.2064154056294 270.158124923413
|
||||
85.2738366482241 271.252346247142
|
||||
85.7569617388232 273.45186230511
|
||||
85.896102836488 274.488321184819
|
||||
85.78258780217 275.436690061992
|
||||
85.5878713057769 275.867085147356
|
||||
85.2781352606995 276.262551009362
|
||||
84.8360944950415 276.618785407101
|
||||
84.2444638369066 276.931486099666
|
||||
84.3983449099047 278.105893507307
|
||||
84.3456486818774 279.249362796252
|
||||
83.8959607241137 281.506487816279
|
||||
83.44627276635 283.828862756198
|
||||
83.3935765383227 285.053894445007
|
||||
83.5474576113207 286.342489212459
|
||||
83.6790998784287 286.819214164918
|
||||
83.9006479141695 287.251536577647
|
||||
84.4687117693407 288.048364609187
|
||||
84.962150132416 288.863754957622
|
||||
85.0904163030369 289.319280266469
|
||||
85.091463958977 289.828489273494
|
||||
84.2736814377291 290.3713310656
|
||||
83.3672122118456 290.699486702388
|
||||
82.451368844269 290.878392785495
|
||||
81.6054638979418 290.97348591656
|
||||
81.4909137116207 291.484100274449
|
||||
81.4730037955029 291.921193986838
|
||||
81.6655402538759 292.616831272548
|
||||
82.0599442330582 293.144421368545
|
||||
82.5330866930468 293.587987869685
|
||||
82.9618385938389 294.031554370826
|
||||
83.2230708954317 294.559144466823
|
||||
83.1936545578224 295.254781752532
|
||||
83.0314753243161 295.691875464921
|
||||
82.7504605410082 296.20248982281
|
||||
82.2821846512539 297.108771934812
|
||||
82.2253189442141 298.057066291278
|
||||
82.6945838091357 299.986363380855
|
||||
82.895097246526 300.920701935594
|
||||
82.8557865974886 301.803724378055
|
||||
82.6953195632828 302.218700779309
|
||||
82.413843294738 302.612098619049
|
||||
81.9910067209435 302.981001386126
|
||||
81.4064587709887 303.322492569392
|
||||
81.3823336718065 303.772132485812
|
||||
81.5869588015063 304.119116753047
|
||||
81.875583564995 304.428788989489
|
||||
82.1034573671801 304.766492813533
|
||||
81.6217738000138 305.776545405095
|
||||
81.2655513641817 306.879926889842
|
||||
81.0435321835263 308.043965279763
|
||||
80.9644583818896 309.235988586848
|
||||
81.0370720831139 310.423324823087
|
||||
81.2701154110415 311.573302000468
|
||||
81.6723304895146 312.653248130982
|
||||
82.2524594423754 313.630491226619
|
||||
82.8035173696859 313.91096124955
|
||||
83.1994366404993 314.210094853943
|
||||
83.6008357164843 314.85969457001
|
||||
83.6066096780283 315.569973900621
|
||||
83.3667115328295 316.331616371577
|
||||
82.7497109529955 317.971724837726
|
||||
82.6725145337565 318.83155788452
|
||||
82.9494580385668 319.705488174861
|
||||
83.6357809809429 320.650364011233
|
||||
84.4708500263674 321.271427124446
|
||||
85.4120674935562 321.664958804553
|
||||
86.4168357012255 321.927240341609
|
||||
88.4466336128695 322.443178146785
|
||||
89.3864679542763 322.889396995013
|
||||
90.2194623110277 323.589490860408
|
||||
91.3953618464453 324.716746836608
|
||||
92.3717266676409 325.922787874644
|
||||
93.187052732466 327.193024187987
|
||||
93.8798359987719 328.512865990107
|
||||
95.051757967232 331.243006914561
|
||||
96.1954602358324 333.996492355769
|
||||
95.9317112324221 334.526803761428
|
||||
95.5044612047655 334.954740971034
|
||||
94.5524624941332 335.689489334529
|
||||
93.0758246538622 334.968386918013
|
||||
91.5076169130785 334.46847555012
|
||||
88.2342099306566 333.803116768306
|
||||
86.5978697893603 333.473114758437
|
||||
85.0076779482348 333.035194605296
|
||||
83.4980639574511 332.407079010909
|
||||
82.1034573671801 331.506490677302
|
||||
81.2246101704819 332.075711697047
|
||||
80.2261145470125 332.391069143718
|
||||
78.0639590380175 332.645365684932
|
||||
76.9971896616204 332.776890963023
|
||||
76.0045528767092 333.039725035136
|
||||
75.1344939378483 333.530160993045
|
||||
74.435458099602 334.344491928523
|
||||
75.2668571790142 335.315232764637
|
||||
76.1526764688475 336.176464795773
|
||||
78.071819936989 337.589961021846
|
||||
80.16137701845 338.624097764199
|
||||
82.3898362276537 339.317992180293
|
||||
84.7256860790236 339.710761427586
|
||||
87.1374150869829 339.841522663539
|
||||
89.5935117659552 339.749393045609
|
||||
92.0624646303637 339.473489731257
|
||||
93.9671496508105 339.05889663071
|
||||
95.9464615938647 338.882241218989
|
||||
97.8882741091234 339.088460772937
|
||||
98.8100785968287 339.380441561048
|
||||
99.680460846184 339.822492569392
|
||||
101.149694955109 341.386757880156
|
||||
102.618835365532 343.114616840785
|
||||
103.41170065677 343.910079605585
|
||||
104.27453879094 344.590663581794
|
||||
105.230681857227 345.104443035727
|
||||
106.303461944817 345.399492233699
|
||||
106.713770190386 346.531288570432
|
||||
107.228679960726 347.543267987376
|
||||
107.838417844979 348.44512921263
|
||||
108.533210432289 349.246570974296
|
||||
109.3032843118 349.95729200047
|
||||
110.138866072653 350.586991019254
|
||||
111.967459594963 351.642117947047
|
||||
113.940803712366 352.48954158247
|
||||
115.980711138008 353.206851750319
|
||||
118.008994585036 353.87163827539
|
||||
119.947466766594 354.561490982478
|
||||
121.624440407513 355.409717604225
|
||||
123.420511638878 355.988366216128
|
||||
125.30065331435 356.317264869516
|
||||
127.22983828759 356.416241615718
|
||||
129.173039412258 356.305124506061
|
||||
131.095229542015 356.003741591876
|
||||
132.961381530522 355.53192092449
|
||||
13
|
||||
108.793459808586 338.178491562312
|
||||
108.761770149825 337.639546550517
|
||||
108.58868149495 337.261429339354
|
||||
108.302295437215 337.016718141442
|
||||
107.930713569878 336.877991169398
|
||||
107.044368779419 336.808802753394
|
||||
106.154459869621 336.834489792293
|
||||
106.073443925141 337.246115654414
|
||||
106.179084694145 337.69974133343
|
||||
106.434163844345 338.143991440242
|
||||
106.80146304345 338.52749058575
|
||||
107.909212982414 338.52099177212
|
||||
108.411899959801 338.464210301345
|
||||
29
|
||||
119.598467743157 332.850492447322
|
||||
119.900662278889 332.501130439048
|
||||
120.315978443382 332.184475689834
|
||||
121.229334747551 331.555865734523
|
||||
121.599054431675 331.197199411397
|
||||
121.825254833458 330.777818113273
|
||||
121.843775725125 330.274366281634
|
||||
121.590456878899 329.663488357966
|
||||
119.923148309944 328.726753681605
|
||||
118.18571177697 327.95811268658
|
||||
116.4576508162 327.170909374659
|
||||
114.81846896386 326.178487747615
|
||||
114.151621258019 326.174669325059
|
||||
113.554150497673 326.31612846226
|
||||
112.471712982414 326.831863373225
|
||||
111.379902755974 327.319660395091
|
||||
110.770716106652 327.426197170918
|
||||
110.087466156243 327.373487442439
|
||||
109.962305700539 328.554472475951
|
||||
110.056710159538 329.838114231532
|
||||
110.515239870308 331.084443241065
|
||||
110.92622680044 331.649875007277
|
||||
111.482455169914 332.153490036433
|
||||
112.429406380413 332.649089932149
|
||||
113.401539242027 332.906599968379
|
||||
114.395912980793 332.986711561387
|
||||
115.409586822746 332.950116127437
|
||||
117.48307172036 332.769569843715
|
||||
118.537001228092 332.74700182647
|
||||
|
|
@ -0,0 +1,351 @@
|
|||
7
|
||||
148
|
||||
259.300 501.200
|
||||
268.500 495.800
|
||||
277.700 490.800
|
||||
286.800 486.200
|
||||
295.900 481.900
|
||||
305.000 478.000
|
||||
314.000 474.500
|
||||
323.000 471.400
|
||||
332.000 468.600
|
||||
341.000 466.200
|
||||
350.000 464.200
|
||||
358.900 462.600
|
||||
367.900 461.300
|
||||
376.800 460.400
|
||||
385.700 459.800
|
||||
394.600 459.600
|
||||
401.200 459.700
|
||||
408.300 460.000
|
||||
415.800 460.400
|
||||
423.800 461.100
|
||||
432.400 462.100
|
||||
441.500 463.400
|
||||
443.800 459.600
|
||||
335.700 373.500
|
||||
346.800 370.300
|
||||
357.500 366.900
|
||||
367.700 363.200
|
||||
377.400 359.100
|
||||
386.600 354.700
|
||||
395.300 350.000
|
||||
403.500 345.000
|
||||
411.300 339.600
|
||||
418.500 334.000
|
||||
425.200 328.000
|
||||
431.400 321.700
|
||||
437.100 315.100
|
||||
442.300 308.200
|
||||
447.100 301.000
|
||||
451.300 293.400
|
||||
455.000 285.500
|
||||
458.300 277.300
|
||||
461.000 268.800
|
||||
463.200 260.000
|
||||
465.000 250.800
|
||||
466.200 241.400
|
||||
467.000 231.600
|
||||
467.200 221.500
|
||||
467.000 213.300
|
||||
466.300 205.100
|
||||
465.100 196.800
|
||||
463.400 188.500
|
||||
461.300 180.200
|
||||
458.800 171.800
|
||||
455.800 163.500
|
||||
452.400 155.200
|
||||
448.500 146.900
|
||||
444.200 138.700
|
||||
439.500 130.600
|
||||
434.300 122.500
|
||||
428.800 114.600
|
||||
422.800 106.800
|
||||
416.500 99.200
|
||||
409.700 91.700
|
||||
402.500 84.300
|
||||
395.000 77.200
|
||||
387.100 70.300
|
||||
380.100 64.700
|
||||
373.000 59.300
|
||||
365.500 54.100
|
||||
357.900 49.100
|
||||
350.100 44.300
|
||||
342.000 39.700
|
||||
333.800 35.400
|
||||
325.400 31.200
|
||||
316.800 27.400
|
||||
308.100 23.700
|
||||
299.200 20.300
|
||||
290.200 17.200
|
||||
281.100 14.300
|
||||
271.900 11.600
|
||||
262.600 9.200
|
||||
253.200 7.100
|
||||
243.700 5.200
|
||||
234.200 3.700
|
||||
224.600 2.400
|
||||
215.000 1.300
|
||||
205.300 0.600
|
||||
195.600 0.100
|
||||
186.000 0.000
|
||||
175.300 0.300
|
||||
164.800 1.000
|
||||
154.500 2.300
|
||||
144.500 4.100
|
||||
134.700 6.400
|
||||
125.100 9.100
|
||||
115.800 12.300
|
||||
106.800 15.900
|
||||
98.100 20.000
|
||||
89.700 24.500
|
||||
81.600 29.400
|
||||
73.800 34.800
|
||||
66.300 40.500
|
||||
59.200 46.600
|
||||
52.400 53.000
|
||||
46.000 59.800
|
||||
40.000 67.000
|
||||
34.300 74.500
|
||||
29.100 82.300
|
||||
24.200 90.400
|
||||
19.700 98.800
|
||||
15.700 107.500
|
||||
12.100 116.500
|
||||
9.000 125.700
|
||||
6.300 135.200
|
||||
4.000 144.900
|
||||
2.300 154.900
|
||||
1.000 165.000
|
||||
0.300 175.400
|
||||
0.000 186.000
|
||||
0.200 194.600
|
||||
0.700 203.300
|
||||
1.500 211.900
|
||||
2.700 220.500
|
||||
4.200 229.000
|
||||
6.100 237.500
|
||||
8.200 246.000
|
||||
10.700 254.400
|
||||
13.600 262.800
|
||||
16.700 271.100
|
||||
20.200 279.300
|
||||
24.000 287.500
|
||||
28.100 295.600
|
||||
32.500 303.700
|
||||
37.300 311.700
|
||||
42.400 319.600
|
||||
47.700 327.400
|
||||
53.400 335.100
|
||||
59.400 342.800
|
||||
65.700 350.300
|
||||
72.300 357.800
|
||||
79.300 365.100
|
||||
86.500 372.400
|
||||
94.000 379.500
|
||||
101.800 386.600
|
||||
109.900 393.500
|
||||
118.400 400.300
|
||||
127.100 407.000
|
||||
136.100 413.500
|
||||
40
|
||||
249.500 212.400
|
||||
258.200 207.900
|
||||
266.800 203.900
|
||||
275.300 200.400
|
||||
283.700 197.400
|
||||
292.000 194.900
|
||||
300.300 193.000
|
||||
308.500 191.600
|
||||
316.800 190.800
|
||||
325.100 190.500
|
||||
333.400 190.800
|
||||
341.700 191.700
|
||||
350.100 193.300
|
||||
358.500 195.500
|
||||
366.900 198.300
|
||||
375.400 201.800
|
||||
384.000 206.000
|
||||
392.700 210.800
|
||||
401.400 216.200
|
||||
399.600 225.500
|
||||
396.900 234.500
|
||||
393.400 242.900
|
||||
389.100 250.900
|
||||
384.100 258.400
|
||||
378.300 265.300
|
||||
371.800 271.600
|
||||
364.700 277.300
|
||||
357.000 282.300
|
||||
348.700 286.700
|
||||
339.900 290.400
|
||||
330.600 293.300
|
||||
320.900 295.400
|
||||
310.700 296.700
|
||||
300.100 297.100
|
||||
292.400 296.800
|
||||
284.500 296.100
|
||||
276.200 294.700
|
||||
267.600 292.800
|
||||
258.700 290.400
|
||||
249.500 287.300
|
||||
36
|
||||
259.000 36.500
|
||||
268.300 37.300
|
||||
277.500 38.500
|
||||
286.500 40.200
|
||||
295.300 42.300
|
||||
303.900 45.000
|
||||
312.200 48.100
|
||||
320.400 51.600
|
||||
328.400 55.700
|
||||
336.100 60.100
|
||||
343.600 65.100
|
||||
350.800 70.400
|
||||
357.800 76.300
|
||||
364.500 82.500
|
||||
371.000 89.200
|
||||
377.100 96.400
|
||||
383.000 103.900
|
||||
388.600 111.900
|
||||
380.900 115.900
|
||||
373.100 119.400
|
||||
365.300 122.400
|
||||
357.300 124.800
|
||||
349.200 126.800
|
||||
341.100 128.200
|
||||
332.800 129.000
|
||||
324.300 129.300
|
||||
316.900 129.100
|
||||
309.300 128.400
|
||||
301.600 127.300
|
||||
293.500 125.800
|
||||
285.300 123.900
|
||||
276.800 121.700
|
||||
268.000 119.000
|
||||
258.900 116.000
|
||||
249.500 112.600
|
||||
249.500 36.300
|
||||
34
|
||||
231.300 279.000
|
||||
223.100 276.400
|
||||
215.200 273.200
|
||||
207.400 269.300
|
||||
199.600 264.600
|
||||
199.600 206.400
|
||||
199.400 196.400
|
||||
198.700 187.300
|
||||
197.000 179.000
|
||||
193.900 171.500
|
||||
189.000 164.800
|
||||
185.900 161.600
|
||||
181.900 157.700
|
||||
177.200 153.300
|
||||
171.600 148.200
|
||||
165.200 142.500
|
||||
158.000 136.200
|
||||
141.100 121.600
|
||||
131.400 113.300
|
||||
121.000 104.300
|
||||
128.300 96.000
|
||||
135.700 88.200
|
||||
143.200 81.000
|
||||
150.800 74.300
|
||||
158.500 68.100
|
||||
166.300 62.500
|
||||
174.200 57.400
|
||||
182.100 52.800
|
||||
190.100 48.800
|
||||
198.200 45.400
|
||||
206.400 42.500
|
||||
214.600 40.100
|
||||
222.900 38.300
|
||||
231.300 37.000
|
||||
36
|
||||
116.600 363.400
|
||||
111.100 357.500
|
||||
106.100 351.100
|
||||
101.400 344.300
|
||||
97.100 337.000
|
||||
93.200 329.300
|
||||
89.700 321.200
|
||||
86.600 312.700
|
||||
83.900 303.800
|
||||
81.600 294.500
|
||||
79.700 284.800
|
||||
78.200 274.600
|
||||
77.200 264.100
|
||||
76.600 253.200
|
||||
76.400 241.900
|
||||
76.500 231.200
|
||||
77.100 220.800
|
||||
78.000 210.600
|
||||
79.300 200.800
|
||||
80.900 191.300
|
||||
82.900 182.100
|
||||
85.200 173.200
|
||||
87.900 164.700
|
||||
90.900 156.500
|
||||
94.300 148.600
|
||||
98.000 141.200
|
||||
102.100 134.000
|
||||
106.400 127.300
|
||||
111.100 121.000
|
||||
115.600 124.500
|
||||
118.800 129.200
|
||||
120.800 135.200
|
||||
121.900 142.700
|
||||
122.400 151.700
|
||||
122.500 162.500
|
||||
122.500 368.900
|
||||
46
|
||||
249.500 130.000
|
||||
258.200 133.100
|
||||
266.800 135.900
|
||||
275.300 138.300
|
||||
283.600 140.400
|
||||
291.900 142.100
|
||||
300.000 143.400
|
||||
308.200 144.400
|
||||
316.300 145.000
|
||||
324.300 145.200
|
||||
333.800 144.900
|
||||
343.100 144.100
|
||||
352.000 142.800
|
||||
360.800 141.000
|
||||
369.300 138.600
|
||||
377.700 135.600
|
||||
385.900 132.000
|
||||
393.900 127.800
|
||||
397.200 135.000
|
||||
399.900 142.400
|
||||
402.100 150.000
|
||||
403.800 157.900
|
||||
405.000 166.000
|
||||
405.700 174.300
|
||||
406.000 182.900
|
||||
405.900 188.200
|
||||
405.700 193.500
|
||||
405.200 198.800
|
||||
395.200 194.000
|
||||
385.500 189.800
|
||||
376.000 186.000
|
||||
366.800 182.800
|
||||
357.900 180.200
|
||||
349.200 178.100
|
||||
340.900 176.600
|
||||
332.800 175.700
|
||||
325.100 175.400
|
||||
317.200 175.600
|
||||
309.200 176.300
|
||||
301.100 177.400
|
||||
292.900 179.000
|
||||
284.500 181.000
|
||||
276.000 183.500
|
||||
267.300 186.400
|
||||
258.500 189.700
|
||||
249.500 193.500
|
||||
3
|
||||
320.500 386.300
|
||||
199.600 434.700
|
||||
199.600 288.800
|
||||
|
|
@ -0,0 +1,244 @@
|
|||
6
|
||||
140
|
||||
115.300 0.000
|
||||
115.300 112.700
|
||||
107.000 112.700
|
||||
99.500 112.600
|
||||
91.800 112.000
|
||||
84.000 111.100
|
||||
75.900 109.800
|
||||
67.700 108.200
|
||||
59.300 106.200
|
||||
50.700 103.800
|
||||
41.900 101.100
|
||||
32.800 98.000
|
||||
23.600 94.600
|
||||
14.100 90.900
|
||||
4.400 86.800
|
||||
0.000 94.400
|
||||
4.600 101.300
|
||||
9.700 108.100
|
||||
15.200 114.500
|
||||
21.100 120.700
|
||||
27.400 126.700
|
||||
34.200 132.400
|
||||
41.400 137.800
|
||||
49.000 143.000
|
||||
57.000 148.000
|
||||
65.400 152.600
|
||||
74.300 157.100
|
||||
83.600 161.300
|
||||
93.300 165.200
|
||||
103.400 168.900
|
||||
114.000 172.300
|
||||
112.800 181.200
|
||||
111.100 189.800
|
||||
108.800 198.300
|
||||
106.000 206.600
|
||||
102.700 214.800
|
||||
98.900 222.700
|
||||
94.500 230.400
|
||||
89.600 237.900
|
||||
84.200 245.200
|
||||
78.300 252.300
|
||||
71.900 259.200
|
||||
65.000 265.900
|
||||
57.500 272.300
|
||||
49.600 278.600
|
||||
41.100 284.700
|
||||
32.100 290.500
|
||||
22.700 296.100
|
||||
12.700 301.500
|
||||
12.700 304.000
|
||||
115.300 375.000
|
||||
115.300 415.500
|
||||
114.600 425.000
|
||||
112.600 433.500
|
||||
109.400 441.000
|
||||
105.100 447.500
|
||||
99.600 453.000
|
||||
93.000 457.300
|
||||
85.500 460.400
|
||||
77.100 462.300
|
||||
67.800 463.000
|
||||
60.500 462.700
|
||||
52.300 461.800
|
||||
43.400 460.400
|
||||
33.800 458.500
|
||||
23.400 456.000
|
||||
23.400 464.900
|
||||
31.100 471.200
|
||||
38.800 476.900
|
||||
46.700 481.900
|
||||
54.500 486.300
|
||||
62.500 490.000
|
||||
70.400 493.000
|
||||
78.300 495.400
|
||||
86.300 497.100
|
||||
94.100 498.100
|
||||
102.000 498.500
|
||||
111.800 498.000
|
||||
121.200 496.500
|
||||
130.100 494.000
|
||||
138.400 490.700
|
||||
146.100 486.400
|
||||
153.100 481.300
|
||||
159.400 475.300
|
||||
165.000 468.600
|
||||
169.800 461.100
|
||||
173.700 452.800
|
||||
176.700 443.800
|
||||
178.800 434.100
|
||||
179.900 423.700
|
||||
209.000 441.500
|
||||
209.000 498.500
|
||||
223.600 498.500
|
||||
223.600 452.200
|
||||
290.700 499.100
|
||||
299.600 493.000
|
||||
308.200 486.900
|
||||
316.400 480.900
|
||||
324.200 475.000
|
||||
331.700 469.100
|
||||
338.800 463.200
|
||||
345.600 457.400
|
||||
352.000 451.600
|
||||
358.000 445.700
|
||||
363.600 439.900
|
||||
368.800 434.100
|
||||
373.700 428.300
|
||||
378.100 422.500
|
||||
383.500 414.500
|
||||
387.900 406.500
|
||||
391.500 398.500
|
||||
394.300 390.400
|
||||
396.400 382.200
|
||||
398.000 373.900
|
||||
399.100 365.400
|
||||
399.700 356.700
|
||||
400.100 347.800
|
||||
400.300 338.700
|
||||
400.300 155.200
|
||||
307.800 77.900
|
||||
297.700 82.300
|
||||
288.100 86.400
|
||||
278.700 90.100
|
||||
269.800 93.500
|
||||
261.200 96.500
|
||||
253.000 99.100
|
||||
245.100 101.300
|
||||
237.600 103.000
|
||||
230.400 104.300
|
||||
223.600 105.100
|
||||
223.600 0.000
|
||||
215.600 0.300
|
||||
207.500 0.500
|
||||
199.300 0.800
|
||||
191.000 1.000
|
||||
165.300 1.300
|
||||
151.800 1.100
|
||||
143.900 0.900
|
||||
135.100 0.600
|
||||
125.600 0.300
|
||||
3
|
||||
115.300 359.100
|
||||
68.400 327.500
|
||||
115.300 288.800
|
||||
4
|
||||
209.000 17.700
|
||||
209.000 426.900
|
||||
182.400 409.200
|
||||
182.400 17.700
|
||||
28
|
||||
233.200 175.400
|
||||
242.600 173.400
|
||||
252.000 171.200
|
||||
261.200 169.000
|
||||
270.200 166.600
|
||||
279.200 164.000
|
||||
288.000 161.300
|
||||
296.600 158.500
|
||||
305.200 155.400
|
||||
313.600 152.200
|
||||
321.800 148.700
|
||||
330.000 145.000
|
||||
330.000 227.400
|
||||
323.100 232.900
|
||||
316.000 237.500
|
||||
308.700 241.200
|
||||
301.000 244.100
|
||||
293.000 246.100
|
||||
284.500 247.300
|
||||
275.500 247.600
|
||||
267.500 247.300
|
||||
259.700 246.400
|
||||
252.100 244.800
|
||||
244.700 242.600
|
||||
237.500 239.700
|
||||
230.400 236.100
|
||||
223.600 231.800
|
||||
223.600 177.300
|
||||
32
|
||||
328.700 352.700
|
||||
326.700 362.900
|
||||
324.000 372.700
|
||||
320.500 381.900
|
||||
316.300 390.500
|
||||
311.500 398.600
|
||||
306.000 406.000
|
||||
300.000 412.900
|
||||
293.400 419.000
|
||||
286.300 424.500
|
||||
278.600 429.300
|
||||
270.600 433.300
|
||||
262.100 436.600
|
||||
253.200 439.000
|
||||
243.900 440.700
|
||||
234.300 441.500
|
||||
223.600 435.800
|
||||
223.600 342.700
|
||||
228.600 337.500
|
||||
234.700 333.000
|
||||
241.900 329.100
|
||||
250.000 326.000
|
||||
258.800 323.700
|
||||
268.200 322.200
|
||||
278.000 321.800
|
||||
287.100 322.200
|
||||
295.900 323.600
|
||||
304.100 325.700
|
||||
311.800 328.700
|
||||
318.700 332.500
|
||||
324.800 336.900
|
||||
330.000 342.000
|
||||
30
|
||||
230.300 249.200
|
||||
237.400 252.700
|
||||
244.800 255.600
|
||||
252.500 257.900
|
||||
260.500 259.600
|
||||
268.800 260.600
|
||||
277.400 260.900
|
||||
284.300 260.600
|
||||
291.300 259.700
|
||||
298.600 258.100
|
||||
306.000 255.900
|
||||
313.700 253.000
|
||||
321.700 249.400
|
||||
330.000 245.100
|
||||
330.000 323.700
|
||||
323.300 319.600
|
||||
316.500 316.200
|
||||
309.300 313.400
|
||||
301.800 311.200
|
||||
294.000 309.700
|
||||
285.900 308.800
|
||||
277.400 308.400
|
||||
268.600 308.700
|
||||
260.300 309.600
|
||||
252.200 311.000
|
||||
244.600 313.000
|
||||
237.200 315.700
|
||||
230.300 319.000
|
||||
223.600 323.000
|
||||
223.600 245.100
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
1
|
||||
74
|
||||
10175.200 1178.600
|
||||
10255.100 1458.500
|
||||
10238.900 1458.500
|
||||
10230.900 1458.400
|
||||
10223.400 1458.100
|
||||
10216.300 1457.600
|
||||
10209.600 1457.000
|
||||
10203.400 1456.100
|
||||
10197.600 1455.000
|
||||
10192.300 1453.700
|
||||
10187.400 1452.300
|
||||
10182.900 1450.600
|
||||
10178.900 1448.700
|
||||
10174.700 1446.300
|
||||
10170.600 1443.400
|
||||
10166.600 1440.000
|
||||
10162.700 1436.100
|
||||
10158.800 1431.700
|
||||
10155.000 1426.800
|
||||
10151.300 1421.500
|
||||
10147.700 1415.600
|
||||
10144.100 1409.300
|
||||
10136.700 1395.200
|
||||
10126.100 1397.500
|
||||
10136.000 1439.200
|
||||
10146.100 1481.100
|
||||
10421.900 1481.100
|
||||
10409.800 1438.700
|
||||
10398.000 1396.200
|
||||
10386.100 1397.700
|
||||
10386.900 1400.700
|
||||
10387.200 1409.000
|
||||
10387.000 1416.600
|
||||
10386.400 1423.500
|
||||
10385.200 1429.600
|
||||
10383.600 1435.000
|
||||
10381.500 1439.700
|
||||
10378.900 1443.700
|
||||
10375.900 1447.000
|
||||
10372.900 1449.200
|
||||
10369.400 1451.100
|
||||
10365.300 1452.900
|
||||
10360.600 1454.400
|
||||
10355.400 1455.600
|
||||
10349.500 1456.700
|
||||
10343.100 1457.500
|
||||
10336.100 1458.100
|
||||
10328.500 1458.400
|
||||
10320.300 1458.500
|
||||
10306.200 1458.500
|
||||
10231.700 1197.400
|
||||
10229.300 1188.600
|
||||
10227.600 1180.700
|
||||
10226.600 1173.800
|
||||
10226.200 1167.800
|
||||
10226.500 1162.900
|
||||
10227.500 1159.000
|
||||
10230.500 1154.300
|
||||
10235.300 1150.600
|
||||
10242.200 1147.800
|
||||
10250.900 1145.900
|
||||
10271.400 1144.200
|
||||
10268.000 1131.300
|
||||
10117.300 1131.300
|
||||
10120.700 1144.200
|
||||
10133.300 1145.700
|
||||
10140.300 1146.700
|
||||
10146.700 1148.200
|
||||
10152.300 1150.100
|
||||
10157.200 1152.400
|
||||
10161.400 1155.200
|
||||
10165.800 1159.400
|
||||
10169.500 1164.700
|
||||
10172.700 1171.100
|
||||
|
|
@ -0,0 +1,159 @@
|
|||
1
|
||||
157
|
||||
355.500 113.000
|
||||
347.000 104.800
|
||||
338.100 97.200
|
||||
328.800 90.300
|
||||
319.100 84.000
|
||||
309.100 78.300
|
||||
298.900 73.300
|
||||
288.400 68.900
|
||||
277.800 65.100
|
||||
267.000 62.000
|
||||
256.200 59.400
|
||||
245.300 57.500
|
||||
234.400 56.200
|
||||
223.600 55.400
|
||||
212.700 55.300
|
||||
202.000 55.700
|
||||
191.500 56.600
|
||||
181.000 58.100
|
||||
170.800 60.200
|
||||
160.800 62.700
|
||||
151.000 65.800
|
||||
141.600 69.400
|
||||
132.400 73.400
|
||||
123.500 77.900
|
||||
115.000 82.900
|
||||
106.800 88.200
|
||||
99.000 94.000
|
||||
91.600 100.200
|
||||
84.700 106.700
|
||||
78.100 113.500
|
||||
72.100 120.700
|
||||
66.400 128.200
|
||||
61.300 135.900
|
||||
56.600 143.900
|
||||
52.400 152.200
|
||||
48.700 160.600
|
||||
45.500 169.200
|
||||
42.800 177.900
|
||||
40.600 186.700
|
||||
38.900 195.600
|
||||
37.700 204.600
|
||||
37.000 213.600
|
||||
36.800 222.600
|
||||
37.200 231.500
|
||||
38.000 240.400
|
||||
39.300 249.100
|
||||
41.100 257.700
|
||||
43.300 266.100
|
||||
46.000 274.300
|
||||
49.200 282.200
|
||||
52.800 289.800
|
||||
56.800 297.100
|
||||
61.200 304.000
|
||||
66.000 310.500
|
||||
71.900 319.100
|
||||
78.300 327.300
|
||||
85.000 335.000
|
||||
92.100 342.300
|
||||
99.600 349.000
|
||||
107.300 355.300
|
||||
115.400 361.100
|
||||
123.700 366.400
|
||||
132.300 371.100
|
||||
141.100 375.400
|
||||
150.000 379.100
|
||||
159.200 382.300
|
||||
168.400 384.900
|
||||
177.800 387.100
|
||||
187.300 388.700
|
||||
196.800 389.800
|
||||
206.400 390.400
|
||||
216.000 390.500
|
||||
225.600 390.200
|
||||
235.100 389.300
|
||||
244.600 388.000
|
||||
253.900 386.200
|
||||
263.200 383.900
|
||||
272.300 381.300
|
||||
281.300 378.200
|
||||
290.100 374.800
|
||||
298.600 371.000
|
||||
306.900 366.900
|
||||
315.000 362.400
|
||||
322.800 357.700
|
||||
330.200 352.700
|
||||
337.400 347.500
|
||||
344.100 342.100
|
||||
350.500 336.500
|
||||
342.700 331.600
|
||||
335.100 326.500
|
||||
327.500 321.300
|
||||
320.000 316.000
|
||||
312.600 310.600
|
||||
305.300 305.000
|
||||
298.100 299.300
|
||||
291.000 293.500
|
||||
286.600 303.100
|
||||
281.400 312.000
|
||||
275.400 320.000
|
||||
268.900 327.200
|
||||
261.800 333.500
|
||||
254.300 338.900
|
||||
246.500 343.400
|
||||
238.400 346.900
|
||||
230.100 349.600
|
||||
221.800 351.200
|
||||
213.400 352.000
|
||||
205.100 351.700
|
||||
197.000 350.600
|
||||
189.000 348.500
|
||||
181.400 345.600
|
||||
174.000 341.700
|
||||
167.000 337.000
|
||||
160.400 331.500
|
||||
154.300 325.300
|
||||
148.800 318.200
|
||||
143.800 310.500
|
||||
139.400 302.200
|
||||
135.600 293.300
|
||||
132.400 283.900
|
||||
130.000 274.000
|
||||
128.200 263.700
|
||||
127.200 253.200
|
||||
127.000 242.400
|
||||
127.400 231.400
|
||||
128.700 220.400
|
||||
130.700 209.500
|
||||
133.400 198.700
|
||||
136.900 188.100
|
||||
141.200 177.900
|
||||
146.200 168.200
|
||||
152.000 159.000
|
||||
159.400 149.600
|
||||
167.100 141.100
|
||||
175.000 133.600
|
||||
183.200 126.900
|
||||
191.600 121.100
|
||||
200.100 116.200
|
||||
208.800 112.200
|
||||
217.600 109.100
|
||||
226.500 106.700
|
||||
235.300 105.200
|
||||
244.200 104.600
|
||||
253.000 104.700
|
||||
261.700 105.700
|
||||
270.300 107.400
|
||||
278.800 110.000
|
||||
287.100 113.300
|
||||
295.100 117.300
|
||||
303.000 122.200
|
||||
310.500 127.700
|
||||
317.700 134.000
|
||||
324.500 141.000
|
||||
330.200 134.900
|
||||
336.200 129.100
|
||||
342.400 123.500
|
||||
348.900 118.100
|
||||
|
|
@ -0,0 +1,175 @@
|
|||
2
|
||||
114
|
||||
197.100 305.000
|
||||
197.100 67.900
|
||||
197.300 54.000
|
||||
197.500 48.800
|
||||
197.700 44.600
|
||||
198.100 41.500
|
||||
198.500 39.400
|
||||
200.000 35.000
|
||||
202.200 31.400
|
||||
205.100 28.700
|
||||
208.100 27.100
|
||||
211.900 25.800
|
||||
216.700 24.800
|
||||
222.400 24.200
|
||||
222.400 17.000
|
||||
135.700 0.000
|
||||
135.700 32.600
|
||||
131.900 28.100
|
||||
128.200 23.900
|
||||
124.500 20.100
|
||||
121.000 16.700
|
||||
117.600 13.700
|
||||
114.300 11.000
|
||||
111.100 8.700
|
||||
108.000 6.800
|
||||
103.900 4.700
|
||||
99.500 3.000
|
||||
95.000 1.700
|
||||
90.400 0.800
|
||||
85.500 0.200
|
||||
80.500 0.000
|
||||
75.000 0.200
|
||||
69.600 0.700
|
||||
64.400 1.600
|
||||
59.400 2.900
|
||||
54.500 4.500
|
||||
49.900 6.500
|
||||
45.300 8.800
|
||||
41.000 11.500
|
||||
36.800 14.600
|
||||
32.800 18.000
|
||||
29.000 21.800
|
||||
25.300 25.900
|
||||
21.800 30.400
|
||||
18.400 35.300
|
||||
15.900 39.400
|
||||
13.500 43.700
|
||||
11.400 48.100
|
||||
9.400 52.700
|
||||
7.600 57.400
|
||||
6.000 62.200
|
||||
4.600 67.200
|
||||
3.400 72.300
|
||||
2.300 77.500
|
||||
1.500 82.800
|
||||
0.800 88.300
|
||||
0.400 93.900
|
||||
0.100 99.700
|
||||
0.000 105.600
|
||||
0.100 111.100
|
||||
0.300 116.500
|
||||
0.700 121.800
|
||||
1.300 127.000
|
||||
2.000 132.100
|
||||
2.900 137.100
|
||||
3.900 142.000
|
||||
5.100 146.900
|
||||
6.400 151.600
|
||||
7.900 156.200
|
||||
9.600 160.700
|
||||
11.400 165.200
|
||||
13.800 170.300
|
||||
16.300 175.200
|
||||
19.000 179.800
|
||||
21.900 184.200
|
||||
24.900 188.300
|
||||
28.100 192.100
|
||||
31.500 195.700
|
||||
35.100 199.100
|
||||
38.800 202.100
|
||||
42.700 205.000
|
||||
47.100 207.800
|
||||
51.600 210.300
|
||||
56.200 212.400
|
||||
60.900 214.300
|
||||
65.600 215.700
|
||||
70.400 216.900
|
||||
75.300 217.700
|
||||
80.300 218.200
|
||||
85.300 218.400
|
||||
91.100 218.200
|
||||
96.500 217.500
|
||||
101.800 216.300
|
||||
106.700 214.700
|
||||
111.400 212.700
|
||||
115.200 210.500
|
||||
119.200 207.900
|
||||
123.200 204.800
|
||||
127.300 201.200
|
||||
131.500 197.200
|
||||
135.700 192.600
|
||||
135.700 262.100
|
||||
135.500 268.400
|
||||
135.200 273.700
|
||||
134.900 277.900
|
||||
134.400 281.100
|
||||
133.800 283.200
|
||||
130.500 288.800
|
||||
125.900 292.700
|
||||
122.700 294.000
|
||||
118.300 295.000
|
||||
112.800 295.600
|
||||
106.100 295.800
|
||||
106.100 305.000
|
||||
58
|
||||
132.400 171.200
|
||||
129.000 176.600
|
||||
125.400 181.200
|
||||
121.600 185.300
|
||||
117.700 188.800
|
||||
113.700 191.600
|
||||
109.500 193.800
|
||||
105.100 195.300
|
||||
100.700 196.300
|
||||
96.100 196.600
|
||||
91.000 196.100
|
||||
86.500 194.600
|
||||
82.700 192.200
|
||||
79.500 189.000
|
||||
76.700 185.100
|
||||
74.000 180.200
|
||||
71.600 174.600
|
||||
69.400 168.200
|
||||
68.500 164.900
|
||||
67.700 161.300
|
||||
67.000 157.400
|
||||
66.300 153.200
|
||||
65.800 148.700
|
||||
65.300 144.000
|
||||
64.900 138.900
|
||||
64.600 133.500
|
||||
64.400 127.800
|
||||
64.300 121.800
|
||||
64.300 109.100
|
||||
64.400 103.000
|
||||
64.600 97.200
|
||||
65.200 86.500
|
||||
65.700 81.500
|
||||
66.200 76.900
|
||||
66.800 72.500
|
||||
67.500 68.400
|
||||
68.200 64.500
|
||||
69.000 61.000
|
||||
70.000 57.700
|
||||
72.000 51.800
|
||||
74.200 46.400
|
||||
76.700 41.600
|
||||
79.400 37.400
|
||||
82.400 33.700
|
||||
85.500 30.600
|
||||
89.300 28.300
|
||||
93.900 26.900
|
||||
99.300 26.400
|
||||
103.600 26.800
|
||||
107.800 27.900
|
||||
112.000 29.800
|
||||
116.100 32.500
|
||||
120.100 35.800
|
||||
124.100 40.000
|
||||
128.000 44.800
|
||||
131.900 50.500
|
||||
135.700 56.900
|
||||
135.700 165.300
|
||||
|
|
@ -0,0 +1,119 @@
|
|||
2
|
||||
61
|
||||
7321.400 504.900
|
||||
7334.500 553.900
|
||||
7303.900 553.900
|
||||
7311.200 578.600
|
||||
7341.700 578.600
|
||||
7355.600 624.300
|
||||
7345.400 614.900
|
||||
7338.100 609.800
|
||||
7330.100 606.200
|
||||
7322.800 603.300
|
||||
7315.600 601.800
|
||||
7309.000 600.400
|
||||
7302.500 599.600
|
||||
7287.900 599.600
|
||||
7278.500 600.400
|
||||
7269.800 602.500
|
||||
7266.100 603.300
|
||||
7261.800 604.700
|
||||
7255.200 608.300
|
||||
7251.600 612.000
|
||||
7248.700 615.600
|
||||
7246.500 618.500
|
||||
7244.300 622.100
|
||||
7241.400 627.200
|
||||
7239.200 634.500
|
||||
7237.000 644.600
|
||||
7235.600 657.700
|
||||
7235.600 670.000
|
||||
7236.300 681.700
|
||||
7237.800 691.100
|
||||
7246.500 717.200
|
||||
7258.100 744.800
|
||||
7266.100 757.900
|
||||
7274.100 769.500
|
||||
7283.600 778.900
|
||||
7295.900 789.100
|
||||
7309.000 797.800
|
||||
7322.100 804.300
|
||||
7335.200 810.200
|
||||
7348.300 813.800
|
||||
7357.700 815.200
|
||||
7367.900 816.000
|
||||
7382.500 816.000
|
||||
7391.900 815.200
|
||||
7401.400 812.300
|
||||
7409.400 808.700
|
||||
7418.100 802.200
|
||||
7421.000 800.000
|
||||
7425.400 794.900
|
||||
7429.700 787.700
|
||||
7431.900 782.600
|
||||
7432.600 777.500
|
||||
7433.400 767.300
|
||||
7432.600 759.300
|
||||
7431.900 752.100
|
||||
7427.500 737.600
|
||||
7380.300 578.600
|
||||
7410.100 578.600
|
||||
7403.500 551.700
|
||||
7374.500 551.700
|
||||
7361.400 504.500
|
||||
55
|
||||
7390.500 745.500
|
||||
7391.200 751.400
|
||||
7391.200 757.200
|
||||
7390.500 761.500
|
||||
7388.300 765.900
|
||||
7386.100 768.800
|
||||
7383.200 770.200
|
||||
7380.300 771.700
|
||||
7377.400 772.400
|
||||
7373.000 773.900
|
||||
7367.900 774.600
|
||||
7357.700 774.600
|
||||
7354.100 773.900
|
||||
7349.700 773.100
|
||||
7345.400 772.400
|
||||
7339.600 771.000
|
||||
7336.700 769.500
|
||||
7333.000 767.300
|
||||
7329.400 764.400
|
||||
7322.800 760.100
|
||||
7314.800 752.100
|
||||
7310.500 746.300
|
||||
7306.800 741.200
|
||||
7303.900 735.400
|
||||
7300.300 729.600
|
||||
7297.400 723.800
|
||||
7294.500 717.200
|
||||
7291.600 712.200
|
||||
7289.400 705.600
|
||||
7287.200 699.800
|
||||
7285.800 694.700
|
||||
7282.900 688.200
|
||||
7279.900 676.600
|
||||
7278.500 669.300
|
||||
7277.800 664.200
|
||||
7277.800 658.400
|
||||
7278.500 651.900
|
||||
7279.900 648.300
|
||||
7280.700 643.200
|
||||
7282.100 639.600
|
||||
7284.300 635.900
|
||||
7287.200 632.300
|
||||
7290.800 628.700
|
||||
7293.800 627.200
|
||||
7299.600 625.800
|
||||
7304.700 625.000
|
||||
7315.600 625.000
|
||||
7319.900 626.500
|
||||
7325.000 627.900
|
||||
7330.100 630.100
|
||||
7333.700 632.300
|
||||
7339.600 636.700
|
||||
7345.400 640.300
|
||||
7354.100 649.000
|
||||
7363.400 658.900
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
1
|
||||
56
|
||||
260.600 37.500
|
||||
182.500 37.500
|
||||
182.500 82.500
|
||||
176.600 73.700
|
||||
170.100 65.800
|
||||
163.000 58.600
|
||||
155.500 52.200
|
||||
147.500 46.700
|
||||
139.200 41.900
|
||||
130.600 38.000
|
||||
121.800 34.800
|
||||
112.900 32.400
|
||||
103.800 30.800
|
||||
94.800 30.000
|
||||
85.800 30.000
|
||||
76.900 30.800
|
||||
68.100 32.300
|
||||
59.600 34.600
|
||||
51.500 37.700
|
||||
43.600 41.600
|
||||
36.300 46.200
|
||||
29.400 51.600
|
||||
23.100 57.800
|
||||
17.400 64.700
|
||||
12.500 72.400
|
||||
8.300 80.900
|
||||
4.900 90.100
|
||||
2.400 100.100
|
||||
0.900 110.800
|
||||
0.400 122.300
|
||||
0.400 328.700
|
||||
78.500 328.700
|
||||
78.500 160.200
|
||||
77.900 145.600
|
||||
78.800 132.700
|
||||
81.000 121.400
|
||||
84.400 111.700
|
||||
88.800 103.600
|
||||
94.100 97.000
|
||||
100.100 91.800
|
||||
106.700 88.000
|
||||
113.800 85.700
|
||||
121.300 84.600
|
||||
128.800 84.900
|
||||
136.400 86.300
|
||||
143.900 89.000
|
||||
151.200 92.900
|
||||
158.000 97.800
|
||||
164.300 103.900
|
||||
169.900 110.900
|
||||
174.600 119.000
|
||||
178.400 128.000
|
||||
181.100 137.900
|
||||
182.500 148.600
|
||||
182.500 328.700
|
||||
260.600 328.700
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,6 @@
|
|||
1
|
||||
4
|
||||
-0.8 -0.4
|
||||
0.8 -0.4
|
||||
0.8 0.4
|
||||
-0.8 0.4
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
1
|
||||
5
|
||||
-0.8 -0.8
|
||||
0.0 -0.6
|
||||
0.8 -0.8
|
||||
0.8 0.8
|
||||
-0.8 0.8
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
1
|
||||
4
|
||||
-0.8 -0.8
|
||||
0.8 -0.8
|
||||
0.8 0.8
|
||||
-0.8 0.8
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
1
|
||||
8
|
||||
-100 -100
|
||||
0 -1200
|
||||
100 -100
|
||||
1200 0
|
||||
100 100
|
||||
0 1200
|
||||
-100 100
|
||||
-1200 0
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
1
|
||||
3
|
||||
-0.8 -0.8
|
||||
0.8 -0.8
|
||||
0.0 0.8
|
||||
Loading…
Reference in New Issue