ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • ArcGIS Pro
  • ArcMap
ArcGIS Desktop

ArcGIS Online

Картографическая платформа вашей организации

ArcGIS Desktop

Полноценная профессиональная ГИС

ArcGIS Enterprise

ГИС предприятия

ArcGIS for Developers

Инструменты для встраивания приложений с местоположениями

ArcGIS Solutions

Бесплатные шаблоны карт и приложений для отрасли

ArcGIS Marketplace

Получение приложения и данных для вашей организации.

  • ArcGIS Pro
  • ArcMap
Esri
English
  • English
  • Deutsch
  • Español
  • Français
  • 日本語
  • Русский
  • 简体中文
  • Войти
user
  • Мой профиль
  • Выход

ArcMap

  • На главную
  • Начало работы
  • Карта
  • Анализ
  • Управление данными
  • Инструменты
  • Дополнительные модули
  • Управление данными
  • Администрирование баз геоданных
  • Использование SQL с базами геоданных
  • Пространственные и растровые типы в SQL
  • Использование ST_Raster с SQL
  • Использование ST_PixelData
  • Вверх
  • Тип данных ST_Raster
  • Краткий обзор использования SQL с типом ST_Raster
  • Отличия реализации типа растра ST_Raster type
  • Подготовка к работе с ST_Raster

    • Установка ST_Raster в Oracle
    • Установка ST_Raster в PostgreSQL
    • Установка ST_Raster в SQL Server
    • Создание таблицы, содержащей столбец ST_Raster
    • Инициализация столбца ST_Raster
    • Вставка изображений в таблицу, содержащую столбец ST_Raster

    Использование функций ST_Raster

    • Функции, которые возвращают свойства значения ST_Raster
    • Функции, которые изменяют свойства значения ST_Raster
    • Построение пирамидных слоев на базе растровых значений в столбце ST_Raster
    • Применение цветовой карты к растровым значениям столбца ST_Raster
    • Расчет статистики растрового значения в столбце ST_Raster
    • Удаление статистики из значения ST_Raster
    • Обрезка значения ST_Raster
    • Удаление цветовой карты из значения ST_Raster
    • Доступ к свойствам ST_Raster
    • Экспорт файла TIFF из столбца ST_Raster
    • Извлечение поднабора растра из значения ST_Raster
    • Примеры использования функций ST_Raster

    Использование ST_PixelData

    • Объект ST_PixelData
    • Создание таблицы, содержащей столбец ST_PixelData
    • Выборка ST_PixelData из столбца ST_Raster в столбец ST_PixelData
    • Изменение значения пикселов типа ST_Raster с помощью значения ST_PixelData

    Справка по функциям ST_Raster

    • Краткий обзор SQL-функций, используемых с ST_Raster
    • ST_PixelData
    • ST_PixelData.getValue
    • ST_PixelData.setExtent
    • ST_PixelData.setValue
    • ST_Raster
    • ST_Raster.buildPyramid
    • ST_Raster.buildStats
    • ST_Raster_check_compatibility
    • ST_Raster.crop
    • ST_Raster.deleteColormap
    • ST_Raster.deleteStats
    • ST_Raster.describe
    • ST_Raster.export
    • ST_Raster.getCompressionType
    • ST_Raster.getInterleaveType
    • ST_Raster.getInterpolationType
    • ST_Raster.getPixelData
    • ST_Raster.getPixelType
    • ST_Raster.getPyramidLevel
    • ST_Raster.getValue
    • ST_Raster.getVersion
    • ST_Raster.hasColormap
    • ST_Raster.hasStats
    • ST_Raster.mosaic
    • ST_Raster.setColormap
    • ST_Raster.subset
    • ST_RasterUtil.checkLibraryVersion
    • ST_RasterUtil.describe
    • ST_RasterUtil.getLibraryVersion
    • ST_RasterUtil.getVersion
    • ST_RasterUtil.initialize

    Рабочий процесс: обновление данных пикселов в значении ST_Raster

    Эта документация ArcGIS 10.4 была перемещена в архив и более не обновляется. Ресурсы и ссылки могут быть устаревшими. См. самую последнюю документацию.
    • Обновление значения ST_Raster с помощью временной переменной ST_PixelData
    • Обновление значения ST_Raster с помощью постоянного столбца ST_PixelData
    Уровень сложности:
    Средний
    Требования к данным:
    Используйте собственные данные
    Задача:
    Ознакомьтесь с двумя способами получения ST_PixelData из значения ST_Raster, редактирования их и записи измененных пикселов обратно в значение ST_Raster.

    Рабочий процесс: редактирования данных пикселов состоит из следующих действий:

    1. Получение ST_PixelData из значения ST_Raster
    2. Редактирование пикселов ST_PixelData
    3. Запись отредактированных пикселов ST_PixelData обратно в значение ST_Raster

    Можно получить данные ST_PixelData в переменную или вставить их в таблицу пикселов. Если получить значение в переменную, все три шага можно выполнить в рамках одного выражения SQL. Если вставить значение в таблицу, значение сохраняется, что позволяет выполнить шаги этого рабочего процесса отдельно.

    Чтобы завершить этот рабочий процесс, используйте функцию ST_Raster getPixelData для получения ST_PixelData из значения ST_Raster и использования функции мозаики ST_Raster для записывания их обратно.

    Обновление значения ST_Raster с помощью временной переменной ST_PixelData

    Можно объявить переменную ST_PixelData, затем использовать функцию getPixelData для получения ST_PixelData из значения ST_Raster в переменную.

    1. Объявите переменную, получите данные пикселов в переменную, измените пикселы, затем поместите измененные значения обратно в значение ST_Raster в виде мозаики.

      В этих примерах значение ST_PixelData извлекается из столбца ST_Raster таблицы urban_area, вставляется в переменную ST_PixelData, редактируется и помещается обратно в значение ST_Raster в виде мозаики.

      Oracle

      --Define the variable.
      DECLARE
        p sde.st_pixeldata;
      
      --Fetch the ST_PixelData from the urban_area table into the variable.
      BEGIN
         SELECT t.raster.getPixelData() INTO p
         FROM URBAN_AREA t
         WHERE t.raster.rasterid = 1;
      
      --Reset pixel values
         FOR i IN 1..256 LOOP
           FOR j IN 1..256 LOOP
             IF(p.getvalue(1,i,j)=0) THEN
              p.setvalue(1,i,j,100);
             END IF;
           END LOOP;
         END LOOP;
      
      --Mosaic the altered pixels to the urban_area table.
         UPDATE URBAN_AREA t
           SET raster = t.raster.mosaic(p,'compression=lz77,level=-1,nearest')
           WHERE t.raster.raster_id = 1;
      END;
      /
      

      PostgreSQL

      --Drop the variable (function) if it already exists.
      DROP FUNCTION IF EXISTS edit_pixeldata();
      
      --Define a varaible.
      CREATE OR REPLACE FUNCTION edit_pixeldata()
      RETURNS integer AS '
      DECLARE p st_pixeldata;
      
      --Fetch the ST_PixelData from the urban_area table into the variable.
      BEGIN
         SELECT getPixelData(raster) INTO p
         FROM urban_area
         WHERE raster_id(raster) = 1;
         
      --Reset pixel values
         FOR i IN 1..256 LOOP
           FOR j IN 1..256 LOOP
             IF(getvalue(p,1,i,j)=0) THEN
                p := setvalue(p,1,i,j,100);
             END IF;
           END LOOP;
         END LOOP;
      
      --Mosaic the altered pixels to the urban_area table.
      UPDATE urban_area
       SET raster = mosaic(raster,p,''compression=lz77,level=-1,nearest'')
       WHERE raster_id(raster) = 1;
      END;'
      LANGUAGE plpgsql;
      
      --Drop the variable.
      SELECT edit_pixeldata();
      DROP FUNCTION IF EXISTS edit_pixeldata();
      

      SQL Server

      --Define the variable.
      DECLARE @p ST_PIXELDATA, @i int, @j int;
      
      --Fetch the ST_PixelData from the urban_area table into the variable.
      SET @p = (SELECT raster.getPixelData(NULL)
                FROM raster.urban_area 
                WHERE raster.raster_id = 1);
      
      --Reset pixel values.
      WHILE( @i<256)
      BEGIN
        WHILE(@j<256)
        BEGIN
          IF(@p.getValue(1,@i,@j)=0)
            SELECT @p = @p.setValue(1,@i,@j,100)
          SET @j=@j+1
        END 
        SET @i=@i+1 
      END
      
      --Mosaic the altered pixels to the urban_area table
      UPDATE raster.urban_area 
      SET raster = raster.mosaic(NULL,@p,'compression=lz77,level=-1,nearest')
      WHERE raster.raster_id = 1;
      

    Обновление значения ST_Raster с помощью постоянного столбца ST_PixelData

    Можно получить значение ST_PixelData в таблицу, отредактировать его, затем поместить обратно в значение ST_Raster в виде мозаики. Это делается в три отдельных шага.

    Эту процедуру можно выполнить, если вам необходимо сохранить полученное значение во второй таблице.

    1. Создайте таблицу для хранения значения данных пикселов.

      В этих примерах создается таблица pixels.

      Oracle

      CREATE TABLE pixels 
      (pdata sde.ST_PixelData);
      

      PostgreSQL

      CREATE TABLE pixels
      (pdata sde.ST_PixelData);
      

      SQL Server

      CREATE TABLE pixels
      (pdata dbo.ST_PixelData);
      
    2. Используйте функцию getPixelData в рамках выражения INSERT для получения ST_PixelData в столбец пикселов таблицы pixels.

      В этих примерах значение ST_PixelData получается в таблицу pixels.

      Oracle

      INSERT INTO pixels (pdata)
         SELECT t.raster.getPixelData(), t.raster.raster_id 
         FROM urban_area t
         WHERE t.raster.raster_id = 1;
      

      PostgreSQL

      INSERT INTO pixels (pdata)
         SELECT getPixelData(raster,'level=1')
         FROM urban_area
         WHERE raster_id(raster) = 1;
      

      SQL Server

      INSERT INTO pixels (pdata)
         SELECT raster.getPixelData('level=1')
         FROM urban_area
         WHERE raster.raster_id = 1;
      
    3. Получите значение из таблицы pixels в переменную, обновите значения пикселов, затем поместите измененные значения обратно в таблицу pixels.

      Oracle

      DECLARE
      p sde.st_pixeldata;
      BEGIN
        
          SELECT pdata INTO p FROM PIXELS; 
          FOR i IN 1..256 LOOP
            FOR j IN 1..256 LOOP
              IF(p.getvalue(1,i,j)=0) THEN
                p.setvalue(1,i,j,100);
              END IF;
            END LOOP;
          END LOOP;
      
          UPDATE PIXELS t 
          SET pdata = p;
      END;
      /
      

      PostgreSQL

      DROP FUNCTION EXISTS edit_pixels();
      CREATE OR REPLACE FUNCTION EDIT_PIXELS()
      RETURNS void AS '
      DECLARE p st_pixeldata;
      BEGIN
        SELECT pdata INTO p 
        FROM pixels; 
        FOR i IN 1..256 LOOP
          FOR j IN 1..256 LOOP
            IF(getvalue(p,1,i,j)=0) THEN
               p := setvalue(p,1,i,j,100);
            END IF;
          END LOOP;
        END LOOP;
        UPDATE pixels SET pdata = p;
      END;' LANGUAGE plpgsql;
      

      SQL Server

      DECLARE
      @p sde.st_pixeldata, @i int, @j int;
      SET @p = (SELECT pdata FROM pixels);
      SET @i = 0;
      SET @j = 0;
      WHILE (@i<256)
      BEGIN
          WHILE (@j<256)
          BEGIN
            IF(@p.getValue(1,@i,@j)=0)
                SELECT @p=@p.setValue(1,@i,@j,100);
              SET @j=@j+1
          END
          SET @i=@i+1
      END
      UPDATE raster.pixels SET pdata = @p;
      
    4. Поместите измененные значения из таблицы pixels в значение ST_Raster таблицы urban_area в виде мозаики.

      Oracle

      DECLARE
      p sde.st_pixeldata;
      BEGIN
        
        SELECT pdata INTO p FROM PIXELS; 
      
        UPDATE URBAN_AREA t 
        SET raster = t.raster.mosaic(p,'compression=lz77,level=-1,nearest')
        WHERE t.raster.raster_id = 1; 
      
      END;
      /
      

      PostgreSQL

      SELECT edit_pixels();
      
      DROP FUNCTION IF EXISTS edit_pixels();
      
      DROP FUNCTION IF EXISTS update_pixels();
      
      CREATE OR REPLACE FUNCTION UPDATE_PIXELS()
      RETURNS void AS '
      DECLARE p st_pixeldata;
      BEGIN
        SELECT pdata INTO p FROM pixels; 
        UPDATE urban_area t 
        SET raster = mosaic(raster,p, ''compression=lz77,level=-1,nearest'')
        WHERE raster_id(raster) = 1; 
      END;' LANGUAGE plpgsql;
      
      SELECT update_pixels();
      
      DROP FUNCTION IF EXISTS update_pixels();
      

      SQL Server

      DECLARE @p sde.ST_Pixeldata;
      SET @p = (SELECT pdata FROM pixels);
      UPDATE raster.urban_area 
      SET raster = raster.mosaic(NULL,@p,'compression=lz77,level=-1,nearest')
      WHERE raster.raster_id = 1;
      

    Связанные разделы

    • ST_Raster.getPixelData
    • ST_PixelData.setValue

    ArcGIS Desktop

    • На главную
    • ArcGIS Pro
    • ArcMap
    • Документация
    • Поддержка

    ArcGIS

    • ArcGIS Online
    • ArcGIS Desktop
    • ArcGIS Enterprise
    • ArcGIS Platform
    • ArcGIS Developer
    • ArcGIS Solutions
    • ArcGIS Marketplace

    Об Esri

    • О нас
    • Карьера
    • Блог сотрудников
    • Конференция пользователей
    • Саммит разработчиков
    Esri
    Copyright © 2017 Esri. | Конфиденциальность | Правовая информация