Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MB6REFRU.pdf
Скачиваний:
10
Добавлен:
13.02.2015
Размер:
3.83 Mб
Скачать

Функция CartesianBuffer( )

Функция CartesianBuffer( )

Назначение:

Возвращает объект типа полигон, представляющий буферную зону (площадь внутри указанного расстояния от существующего объекта).

Синтаксис:

CartesianBuffer ( inputobject, resolution, width, unit_name ) inputobject это выражение объекта

resolution это короткое целое, представляющее число узлов для круга в каждом углу

width это величина с плавающей запятой, представляющая радиус буфера; если ширина отрицательна, и если входящий объект является закрытым, то возвращаемый объект будет по размерам меньше исходного

unit_name это имя единиц измерения расстояния (наприер, ”mi” для милей, ”km” для километров) используемых для измерения ширины

Возвращаемое значение:

Объект типа полигон

Описание:

Функция CartesianBuffer( ) возвращает полигон, представляющий буферную зону.

Функция CartesianBuffer( ) оперирует с одним объектом одновременно. Для создания буфера вокруг ряда объектов, используйте оператор Create Object As Buffer.

Функция CartesianBuffer( ) будет рассчитывать буферную зону, в предположении, что объект спроецирован на плоскость и используя ширину width для расчета декартового расстояния буферной зоны вокруг объекта. Если inputobject в проекции Широта/Долгота, то сферические вычисления будут использоваться независимо от того, какая функция, связанная с буфером будет применяться. Если inputobject в плановых координатах, то будут использоваться декартовые вычисления, независимо от того, какая буферная функция вызывается.

Пример :

Следующая программа создает линейный объект, затем создает буфер вокруг него. Буферная зона занимает 10 миль во всех направлениях вокруг линии.

Dim o_line, o_region As Object

o_line = CreateLine( 73.5, 42.5, 73.6, 42.8) o_region = CartesianBuffer( o_line, 20, 10, ”mi”)

Смотрите также:

Функция Buffer (). Создание объектов. Функция SphericalBuffer ()

58

Справочник MapBasic

Функция CartesianDistance ( )

Функция CartesianDistance ( )

Назначение:

Возвращает расстояние между двумя точками.

Синтаксис:

CartesianDistance ( x1 , y1 , x2 , y2 , unit_name ) x1 и x2 это xLкоординаты (долгота)

y1 и y2 это yLкоординаты (широта)

unit_name это строковая величина, соответствующая имени единиц измерения расстояния (например, ”km”)

Возвращаемое значение :

Вещественное

Описание:

Функция CartesianDistance( ) вычисляет расстояние между двумя точками.

Функция возвращает измеренное расстояние в единицах, указанных параметром unit_name; например, что бы получить расстояние в милях, укажите ”mi” как параметр unit_name . Смотрите оператор Set Distance Units, там полный список возможных единиц измерения.

Функция CartesianDistance( ) всегда возвращает значение, используя для расчетов декартовый алгоритм. Будет возвращено значение L1 для данных в системе координат Широта/Долгота, поскольку система Широта/Долгота не проективная и не декартовая.

Параметры xL и yLкоординат должны использовать текущую систему координат MapBasic. По умолчанию, MapInfo использует координатную систему долгота/широта. Вы можете поменять систему координат MapBasic используя оператор Set CoordSys.

Если текущая система координат географическая, CartesianDistance( ) возвращает расстояние между двумя точками, измеренное по большой дуге. Расстояние по большой дуге это кратчайшее расстояние на сфере между двумя точками.

Если текущая система координат плановая, то CartesianDistance( ) возвращает декартовое расстояние.

Пример:

Dim dist, start_x, start_y, end_x, end_y As Float

Open Table ”cities”

Fetch First From cities

start_x = CentroidX(cities.obj) start_y = CentroidY(cities.obj) Fetch Next From cities

end_x = CentroidX(cities.obj) end_y = CentroidY(cities.obj)

dist = CartesianDistance(start_x,start_y,end_x,end_y,”mi”)

Смотрите также:

Математические функции,

Функция CartesianDistance (), Функция Distance ()

Справочник MapBasic

59

Функция CartesianObjectLen( )

Функция CartesianObjectLen( )

Назначение:

Возвращает географическую длиту линии или полилинии.

Синтаксис:

CartesianObjectLen( expr , unit_name ) obj_expr выражение объекта

unit_name это строковая величина, представляющая имя единиц измерения расстояния (например, ”km”)

Возвращаемое значение:

Вещественное

Описание:

Функция CartesianObjectLen( ) возвращает длину объекта. Обратите внимание, что только объекты типа линия и полилиния имеют длину большую чем ноль; для измерения периметра полигонов, эллипсов и прямоугольников, используйте функцию Perimeter( ).

Функция CartesianObjectLen( ) всегда будет возвращать значение, используя декартовый алгоритм. Величина L1 будет возвращаться для данных в системе Широта/Долгота, поскольку Широта/ Долгота не проективна и не декартова.

Функция CartesianObjectLen( ) возвращает длину, измеренную в единицах длины, определенных параметром unit_name; например, для получения длины в милях, укажите ”mi” как параметр unit_name. Смотрите описание оператора Set Distance Units там есть список возможных типов единиц измерения длины.

Пример:

Dim geogr_length As Float

Open Table ”streets”

Fetch First From streets

geogr_length = CartesianObjectLen(streets.obj, ”mi”)

geogr_length now represents the length of the

street segment, in miles

Смотрите также:

Запросы к объектам карты, функция SphericalObjectLen (), функция CartesianObjectLen(), функция ObjectLen()

60

Справочник MapBasic

Функция CartesianPerimeter( )

Функция CartesianPerimeter( )

Назначение

Возвращает периметр графических объектов.

Синтаксис

CartesianPerimeter( obj_expr , unit_name ) obj_expr это выражение для объекта

unit_name это строковая величина L имя единицы измерения расстояния (например, ”km”)

Возвращаемое значение

Вещественное

Описание

Функция CartesianPerimeter( ) вычисляет периметр объекта obj_expr object. Функция Perimeter( ) определена для следующих типов объектов: эллипсов, прямоугольников, скругленных прямоугольников и полигонов. Другие типы объектов имеют периметр равный нулю.

Функция CartesianPerimeter( ) всегда будет возвращать значение, вычисленное по декартовому алгоритму. Величина L1 будет возвращаться для денных в системе Широта/Долгота, поскольку Широта/Долгота не проективна и не декартова.

Возвращаемое значение длины периметра осуществляется в единицах длины, определенных параметром unit_name; например, для получения длины в милях, укажите ”mi” в качестве параметра unit_name. Смотрите описание оператора Set Distance Units там есть полный список возможных единиц измерения длины.

Приближенный результат возвращается при измерении периметра скругленного прямоугольника. MapBasic вычисляет периметр скругленного прямоугольника как если бы он не был скругленным.

Пример

Следующий пример показывает как Вы можете использовать функцию CartesianPerimeter( ) для определения периметра географического объекта.

Dim perim As Float Open Table ”world” Fetch First From world

perim = CartesianPerimeter(world.obj, ”km”)

The variable perim now contains the perimeter of the polygon that’s attached to

the first record in the World table.

Вы можете также использовать функцию CartesianPerimeter( ) внутри оператора SQL Select. Следующий оператор Select выбирает информацию из таблицы States, и хранит результаты во временной таблице, называемой Results. Поскольку оператор Select включает функцию Cartesian4 Perimeter( ), таблица Results будет включать колонку, показывающую периметр каждого штата.

Open Table ”states”

Select state, CartesianPerimeter(obj, ”mi”)

From states

Into results

Смотрите также:

Функция CartesianPerimeter (), функция SphericalPerimeter (), функция Perimeter ()

Справочник MapBasic

61

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]