FIRST HP: GEOMETRY

Why the GEOMETRY application draws derived for example. The function x ^ 2-x ^ 3, sine, cosine and does not scratch the functions derived as the tangent, logx, LNX. Draw an incomplete derivative of graph of y = 1 / x. Why is it like that.

Hi!, @Johnder:

Welcome to Forum!

Can you better write your equation and question?

Tags: HP Tablets

Similar Questions

  • FIRST HP: Geometry commands Tests

    Hello

    In the application, we function TEST of GEOMETRY. It is a unique but very necessary function. Let me give you an example. I draw the GD rectangle, rectangle (GA, GB, GC). Then, in the geometry view digital and I write is_parallelogram (GD). Then back to the Plot of the geometry window and enter for a vertex to change its dimensions (length and width). Nevertheless, always on the screen I have a rectangle. But on the screen TEST shows strange things. Once the is_parallelogram (GD): 1 then is_parallelogram (GD): 3. even for other geometric figures:
    Rhombus, square, triangle, isosceles triangle.
    Ill work TEST function in the construction of their own this building, where there are forms of a rectangle, square, diamond or different triangles. When we change the dynamic side of these figures we get messages wrong: is_parallelogram, is_ isosceles, equilateral is_.
    I use a lot of GEOMETRY and these false messages on the screen annoyed me. It works great the TEST function for the parallelogram of figures. It shows always, at any time, without any error is_parallelogram (GD): 1. it is similar to is_collinear (). OK, but not perfectly with the command is_parallel and is_perpendicular. It must also be corrected to make it without reservation. I have another question. Is the is_element () command is the mathematical functions only or for different geometric figures and geometric constructions.

    Best regards!

    Johnder

    Hello

    I'm not sure I understand your question exacly (English is not my native language), but I'll try to bring some light it...

    The is_parallelogram function can return the numbers 0, 1, 2, 3 or 4 to indicate: no parallelogram, parallelogram, Rhombus, rectangle and square.

    Go back 0 or 1 that you complain?

    In the application of geometry tests are performed on the values of the coordinates of the object floating points. Unfortunately, this leads to loss of precision which in turn throw off-label test (the value of floating points being the accupressure, the figure is only approximately parallel or rectangle). Perhaps what you are experiencing.

    If this is the case, an easy solution is to change the setting of case epsilon.

    To compare 2 numbers, system of computer algebra (which is the calculation behind the application of geometry engine), subtract them and test if the result is smaller (in absolute value) to epsilon. Change the default 1e-12 1e-10 Epsilon (in CASE settings, page 2: update, Page Down).

    This fix works because, to test if 2 lines are parallel, the CASE will calcualte their relative angle and then compare that angle with 0 (or 90 to perpendicular). Which will make the more lenient number comparison will make the geometry to test also more linient.

    I hope this helps.

    Kind regards

    Cyrille

  • HP first app - a problem of circle geometry

    Here's a problem for a graphical solution for (using the Geometery application):

    Given a unit circle, finding another circle that is framed by the axii unit circle and x and y.

    I tried to use the features in the application, but either I could not find the means to compel the circle (as with the two tangents and circle) or through indirect and mistakes means (on the resolution of the crossroads, etc.).  I thought I had it almost with the following definitions is entered in the symbolic view:

    I actually had to cheat and understand I and J with Algebra first here then place exactly (since I can't force things as I want)

    However, when I draw it, the GK circle is not visible! (?), as shown below

    The new circle must have been touching points H, I and J.

    I also tried to generate a horizontal line at point I using plotfunc (computer (GI)) and trying to intersect with x = line is but the calculator gave a bunc of errors.

    I found the Geo. App. a bit tempramental.  It seems that many times I have to find just the right way to get things to work (if that is the case).  Usually by then it would have been quicker to do it by hand on graph paper.

    Anyway, why no smaller circle of the solution and how could I have do more easily in the application?

    It worked, thanks!

    I guess it was confused (which I don't think it should have been) on the double intersection of the line and the circle.

    I of course didn't know this third option with inter () - this isn't in the help!

  • Set of geometry invoke node: do not have this method (and why is it red?)

    Hi all

    So I take my first steps with the 3D picture control, and I stumbled over the first hurdle!

    How to create a 'set of geometry' call, node, as shown in this photo? If I have the wiring in the output of the object to create an invoke node I get a standard invoke node with several options, but none related to the geometry.

    Second question: why is the Red node to invoke?

    Finally found the reason:

    alignment has been deprecated in LV8.5, from the help:

    Obsolete properties, methods, and events

    LabVIEW 8.5 does not support the properties, methods and events:

  • Size of the problems after the system partition resizing - are X 201 hard drives using a particular geometry?

    I recently copied my default system hard disk (320 GB / Western Digital) on a larger hard drive (500 GB / Hitachi) which I also ordered through Lenovo.

    Using a disk imager I first copied the old 1:1 the new disk drive. It gave me an exact copy of my original disk, with about 150 GB of space disk unallocated at the end of the training. I then put this copy in the system and it worked very well, I could start and work at it.

    -With the help of Acronis Disk Director 11 - I moved the hidden partition Lenovo restore to the end of the new drive, and then finally I expanded the system partition to fill all the available space before this recovery partition, giving me a system about 430 GB drive.

    These operation seemed to go very well at everything first, but in the end I got an alert that something had gone wrong and now the disk may be corrupted. Strange, I was able to boot from the disk and everything went well in the beginning but in fact - I now have a very weird problem: when you look in the Panel-online-online disk management management system all partitions are located and that I had the intention of size. The recovery partition (~ 17 GB) is at the end and the system partition is indicated as approximately 430GB and about 60% vacuum. Explorer Windows, however, always reports the size of the old partition (~ 280 GB) and only 10% of empty space, while if there is no resizing the partition space taken.

    In other words: different parts of Windows 'see' and report to different partition sizes. Running chkdsk does not resolve the issue.

    I then realized this phenomenon in the Acronis Disk Director forum and some guys Acronis replied, that problems of resizing and therefore also the difference could be due to the fact that IBM/Lenovo uses a geometry to non-standard head of 240 heads instead of 255 heads. ????  I then asked for details and - if possible - instructions - how we could solve this problem, but got no further response so far.

    Any idea what he's talking about? Lenovo indeed uses some non-standard disk or geometry? I would have thought, that the access disk is the disk drivers? Lenovo have to do here? Or BIOS of the device involved here?

    And finally: has anyone some experience with this problem and can give an idea how to solve this problem? I'd really like to * hate * restart everywhere have to reformat the hard drive and reinstall everything again!

    Michael

    Thanks for this info!

    I'll try to get my wrecked HD using the Paragon suggested partitioning program and I guess, I'll also try to get a refund on DiskDirector 11, since the site explicitly, it is fully ready Windows7, which obviously isn't!

    Michael

  • Star Wars: Republic Commando. Worked on Vista, the problem is that when the game tries to load the first mission, he leaves the game

    Star Wars: Republic Commando. Worked on Vista, the problem is that when the game tries to load the first mission (the only one available for a new player) outputs of the game and gives the following. I hope this info is useful to anyone who is willing to take the time to help me. Thank you-Zachert45

    Details:

    Problem event name: APPCRASH

    Application name: SWRepublicCommando.exe

    Application version: 0.0.0.0

    Application timestamp: 41f707e4

    Fault Module name: StackHash_1a02

    Fault Module Version: 0.0.0.0

    Fault Module Timestamp: 00000000

    Exception code: c0000005

    Exception Offset: 6 c 707544

    OS version: 6.1.7601.2.1.0.256.48

    Locale ID: 1033

    Information additional 1: 1a 02

    More information 2: 1a022ea3469ead417de7f3ac704042e3

    3 more information: aa4f

    Additional information 4: aa4f8516a5b4c2bae31f69214dbeb837

    In addition, the game made a newspaper that it lasted, if an error occurred. NOTE: Windows verson shown here was one of the many tests bring made, all ended the same way.

    Uninitialized: open the log file, 08/09/12 19:20:48
    Uninitialized: name subsystem initialized
    Init: Detected: Windows NT 6.0 (Build: 6000)
    Init: Build: 139
    Init: Version of the engine: 2226
    Init: Update: January 25, 2005
    Init: command line:
    Init: Base Directory: C:\Program Files (x 86) \LucasArts\Star Wars Republic Commando\GameData\System\
    Init: Character set: ANSI
    Journal: Related to Window.dll
    Journal: Related to Core.dll
    Journal: Related to frengine.dll
    Init: Subsystem of the initialized object
    Init: Computer: ZACHERT45HP
    Init: User: Zachert45
    Init: Of CPU Page size = 4096, processors = 4
    Init: CPU detected: type processor PentiumPro (GenuineIntel)
    Init: CPU features: FPU CMov EAP RDTSC MMX, SSE
    Init: CPU @ 2694 MHz
    Init: Total memory: Phys = 1048575 K Pagef = 2097151 K Virt = 2097024K
    Init: Working together: 32000 / 159000
    Init: Physical memory: 1023 MB
    Init: D3D Device: video memory onboard: 1008
    Caution: Charge Dynamics Engine.GameEngine
    Journal: Bound to CTGame.dll
    Journal: Bound to Gameplay.dll
    Journal: Related to IpDrv.dll
    Journal: Related to XInterface.dll
    Journal: Related to XGame.dll
    Init: Unreal engine initialized
    Journal: Related to WinDrv.dll
    Init: Client initialized
    Journal: Related to D3DDrv.dll
    Init: Direct3D detected adapters:
    Journal: aticfx32.dll/Radeon HD 6470 M
    Init: D3D Driver: MaxTextureBlendStages = 8
    Init: D3D Driver: MaxSimultaneousTextures = 8
    Init: D3D Driver: MaxActiveLights = 8
    Init: D3D Driver: MaxPrimitiveCount = 5592405
    Init: D3D Driver: MaxVertexIndex = 16777215
    Init: D3D Driver: MaxStreams = 16
    Init: D3D Driver: MaxStreamStride = 508
    Init: D3D Driver: MaxVertexShaderConst = 256
    Init: D3D Driver: VertexShaderVersion = 1.1
    Init: D3D Driver: PixelShaderVersion = 1.4
    Init: D3D Driver: support AGP detected
    Init: D3D Driver: using w-pixel fog
    Init: D3D Driver: trilineaires media
    Init: D3D Driver: supports BLENDDIFFUSEALPHA
    Init: D3D Driver: Supports LOD bias
    Init: D3D Driver: Supports Z polarization
    Init: D3D Driver: supports D3DTOP_ADDSIGNED2X
    Init: D3D Driver: supports D3DTOP_BUMPENVMAP
    Init: D3D Driver: supports D3DTOP_BUMPENVMAPLUMINANCE
    Init: D3D Driver: supports D3DTOP_DOTPRODUCT3
    Init: D3D Driver: supports D3DTOP_MODULATEALPHA_ADDCOLOR
    Init: D3D Driver: supports D3DTOP_MODULATECOLOR_ADDALPHA
    Init: Unreal Engine Direct3D support - internal version: SB3
    Init: D3D Device: szDriver = aticfx32.dll
    Init: D3D Device: szDescription = Radeon HD 6470 M
    Init: D3D Device: wProduct = 8
    Init: D3D Device: wVersion = 17
    Init: D3D Device: wSubVersion = 10
    Init: D3D Device: wBuild = 1065
    Init: D3D Device: dwVendorId = 4098
    Init: D3D Device: dwDeviceId = 26464
    Init: D3D Device: dwSubSysId = 370806844
    Init: D3D Device: dwRevision = 0
    Init: D3D detected: ATI video card
    Init: D3D Device: using cubemap [with mipmaps]
    Caution: Charge Dynamics BumpTex.StaticEnvmaps.StaticDiffuse
    Caution: Charge Dynamics BumpTex.StaticEnvmaps.StaticSpecularMatte
    Caution: Charge Dynamics BumpTex.StaticEnvmaps.StaticSpecularDull
    Caution: Charge Dynamics BumpTex.StaticEnvmaps.StaticSpecularPolished
    Caution: Charge Dynamics BumpTex.StaticEnvmaps.StaticSpecularShiny
    Journal: (Karma): Karma from beginning of game.
    Journal: (Karma): creation of MeAssetDB.
    Journal: (Karma): loading: ambient.ka
    Journal: (Karma): loading: clone.ka
    Journal: (Karma): loading: droid.ka
    Journal: (Karma): loading: geonosian.ka
    Journal: (Karma): loading: rasanimprops.ka
    Journal: (Karma): loading: trandoshan.ka
    Journal: (Karma): loading: turrets.ka
    Journal: (Karma): loading: vehicles.ka
    Journal: (Karma): loading: wookiee.ka
    Journal: (Karma): finished creating MeAssetDB (27 properties).
    Log: Watermark memory pre load: 0
    Journal: Preload for entry Stats: 58 opened, looking for 269, dumpsters 954, bed 46950 KB / 4329, serialize 44419 KB / 1615039
    Journal: LoadMap: entry 08/09/12 19:20:49
    Log: Watermark memory pre load: 1
    Caution: Charge Dynamics Entry.myLevel
    Journal: Loading times for the entry: 0.000 sec total, 0.000 app
    Connection: Time entry init actor coll: 0.000 sec total, 0.000 app
    Journal: Play class is "GameInfo."
    Newspaper: The level is level Entry.myLevel
    Newspaper: * WARNING - paths is maybe NOT INVALID *.
    Journal: What is the Entry.myLevel level to play (0) 08/09/12 19:20:49...
    ScriptLog: InitGame:
    ScriptLog: Mutator database is Entry.InGameTempName
    ScriptLog: GameInfo::InitGame: bEnableStatLogging False
    ScriptLog: MusicStat is InGameTempName
    Connection: Time entry init BeginPlay: 0.000 sec total, 0.000 app 08/09/12 19:20:49
    Log: Watermark memory Post charge: 2
    Connection: Time entry init: 0.000 sec total, 0.000 app
    Journal: Entry file load stats: opens 2, looking for 4, 9 trucks, 31KO bed / 16, serialize 7KO / 2092
    Connection: Exit LoadMap 08/09/12 19:20:49
    Caution: Charge Dynamics UDebugMenu.UDebugRootWindow
    Caution: Charge Dynamics UDebugMenu.UDebugBlueLookAndFeel
    Journal: Related to ALAudio.dll
    Init: AL_VENDOR: Creative Labs Inc.
    Init: AL_RENDERER: software
    Init: AL_VERSION: OpenAL 1.0
    Init: AL_EXTENSIONS: EAX 2.0, EAX, EAX, EAX 4.0 3.0 unified and EAX - AC3
    Journal: 16 Sources AL Audio created!
    Init: ALAudio: initialized subsystem.
    ScriptLog: 255 team
    Journal: (Karma): KInitSkeletonKarma: framework, but not of the world.
    Init: System initialized to input InGameTempName
    Journal: Open window
    Journal: Couldn't put the window in the foreground.
    Journal: Enter SetRes: 1024 x 768 full screen 0
    Journal: Using back buffer 22 (32-bit) format
    Journal: Using format 77 (32-bit) depth buffer
    Journal: Creation of device
    Init: D3D Driver: CreateDevice: will use the hardware transformation and lighting.
    Init: D3D Driver: CreateDevice: will use hardware vertex processing
    Journal: Create context of the EMI.
    Init: Init game engine time: seconds 1,366000 total 1.014007 app
    Journal: Game init load stats: opens 2, looking for 11, 61 Skips, bed 445 KB / 141, serialize 268 KB / 190555
    ScriptLog: MenuOpen: XInterfaceCTMenus.CTStartPCMenu (RESET)
    Caution: Charge Dynamics GUIContent.Menu.RC_title_bg
    Journal: StartMovie with m_PlaybackRect (0, 0), (1024, 768)
    Connection: Start time: 1,177000 seconds
    Newspapers: Lots static mesh: 0 bytes of vertex, 0 bytes index
    Journal: StartMovie with m_PlaybackRect (0, 0), (1024, 768)
    Journal: Precaching: Entry.LevelInfo0
    Journal: Allocation of the dynamic index buffer 16384 bytes.
    Log: Precache time geometry: 0.006 sec total, 0.000 app
    Journal: Texture precache time: 0.009 s total, 0.000 app
    Journal: Statistics of load precache entry: opens 5 to 0, seeks 10 jumps, bed 1512 KB / 28, serialize 1496 KB / 142
    Journal: 131072 bytes dynamic vertex buffer Allocation.
    Caution: Charge Dynamics XInterfaceCTMenus.CTMenuMain
    Journal: GotoMenu (InGameTempName)
    Journal: StartMovie
    Journal: CallMenu (InGameTempName)
    Journal: GotoMenu (InGameTempName)
    Journal: CloseMenu()
    Journal: Browse: PRO? Name = zach? Class = CTCharacters.PlayerCommando? Team = 255 08/09/12 19:21
    Log: Watermark memory pre load: 2
    LOG: Preload PRO Stats: 2 opens, looking for the 14, 15 jumps, bed 1315 KB / 56, serialize 1289 KB / 23365
    Journal: LoadMap: new level of loading. Pause/stop implementing caching of files.
    Journal: Unloading: PRO package
    Journal: LoadMap: PRO? Name = zach? Class = CTCharacters.PlayerCommando? Team = 255 08/09/12 19:21
    ScriptLog: stop menu movie
    Journal: Garbage collection
    Journal: Serving garbage
    Journal: Garbage: objects: 23768-> 23528; REF.: 232574
    Journal: FName High Watermark: 33191
    Journal: Number current FName: 30109
    Journal: FName slots available: 3082
    Journal: UObject High Watermark: 23774
    Log: Watermark memory pre load: 3
    Caution: Charge Dynamics PRO.myLevel
    Journal: 131072 bytes dynamic vertex buffer Allocation.
    Journal: (Karma): initialization Karma for the level.
    Journal: (Karma): Autodetecting CPU SSE
    Journal: (Karma): using SSE optimizations
    Newspapers: Loading PRO time: 0,356 total sec, 0,328 app
    Connection: Hour PRO init actor coll: 0.000 sec total, 0.000 app
    Journal: Play class is 'CTGameInfoSP '.
    Newspaper: The level is level PRO.myLevel
    Journal: What is the PRO.myLevel level to play (0) 08/09/12 19:21...
    ScriptLog: InitGame?: Name = zach? Class = CTCharacters.PlayerCommando? Team = 255
    ScriptLog: Mutator is PRO. InGameTempName
    ScriptLog: GameInfo::InitGame: bEnableStatLogging False
    ScriptLog: MusicStat is InGameTempName
    WARNING: PlayAnim: not found "ActionBreathe" sequence for the mesh "CloneBoy."
    ScriptWarning: PawnFactory PRO. PawnFactory2 (function CTGame.Factory.PostBeginPlay:0058) Factory PRO. PawnFactory2 has no prototype!
    WARNING: PlayAnim: not found "ActionBreathe" sequence for the mesh "GunshipBall."
    ScriptWarning: PawnFactory PRO. PawnFactory0 (function CTGame.

    I read the fix below on three different forums.
    Seems to work for some. Especially those with Pentium cpu.

    "In the main Menu, select Options-> graphics. Variation in the quality of the low relief map. When I have it on medium or high, it crashes. »

    The game was released in ' 05, a bad year for compatibility issues with different
    DRM and Win7. If the problem is with the Launcher, then a noCD fix would be a good solution.
    http://MegaGames.com/games/Star-Wars-Republic-Commando

    .

  • How gaps (fill) when converting to a 2006 geometry in a geometry of 2002

    Is it possible to fill (filling) the differences when converting to a geometry in a single geometry of 2002 in 2006. I have a solution for the conversion of 2006 to 2002 provided by BHall but on other investigation of my dataset some of the multi line polygons are weak I need to fill and I don't know how to go on this subject.

    Here is a simple example of what I'm trying to reach

    Front

    SELECT (sdo_geometry (2006, 81989, NULL,))

    MDSYS.sdo_elem_info_array (1,2,1,5,2,1,9,2,1,13,2,1),

    MDSYS.sdo_ordinate_array (16,0.999,16.998,-0,001, 17.253,-0.001, 18.003, 0.999, 18.003, 0.999, 19.001, 0.999, 19.001, 0.999, 19,999,-0,001)))

    OF the double

    After

    SELECT (sdo_geometry (2006, 81989, NULL,))

    MDSYS.sdo_elem_info_array (1,2,1),

    MDSYS.sdo_ordinate_array (16,0.999,17.253,-0.001,18.003,0.999,19.001,0.999,19.999,-0.001))) DOUBLE

    Thanks in advance

    Hi rock,

    Well, I ran all three examples that you sent through my code and it seemed to work!  I pasted the code above in a "pre" html tag and I can still see things deteriorated.  Lemme try this with a different syntax.  You know that this new forum software not only grew on me.  It's just clumsy and exaggerated.  And those weird people at the top.  What were they looking at?  I imagine that Larry on some loft above.

    Anyway, you are right that when Bryan code is used to convert the multiple string, the gaps are filled.  But that's because he wrote of this approach.

    Really, there is no generic way to convert a multiple line string we are discussing.  If you use SDO_UTIL. CONCATENATE_LINES, it will leave gaps.

    See you soon,.

    Paul

    CREATE OR REPLACE PACKAGE dz_gap_fill
    AUTHID CURRENT_USER
    AS
    
       FUNCTION linear_gap_filler(
           p_input            IN  MDSYS.SDO_GEOMETRY
          ,p_tolerance        IN  NUMBER DEFAULT 0.05
       ) RETURN MDSYS.SDO_GEOMETRY;
    
    END dz_gap_fill;
    
    CREATE OR REPLACE PACKAGE BODY dz_gap_fill
    AS
    
       FUNCTION fast_point(
           p_x             IN  NUMBER
          ,p_y             IN  NUMBER
          ,p_z             IN  NUMBER DEFAULT NULL
          ,p_m             IN  NUMBER DEFAULT NULL
          ,p_srid          IN  NUMBER DEFAULT 8265
       ) RETURN MDSYS.SDO_GEOMETRY
       AS
       BEGIN
    
          --------------------------------------------------------------------------
          -- Step 10
          -- Check over incoming parameters
          --------------------------------------------------------------------------
          IF p_x IS NULL
          OR p_y IS NULL
          THEN
             RAISE_APPLICATION_ERROR(-20001,'x and y cannot be NULL');
    
          END IF;
    
          --------------------------------------------------------------------------
          -- Step 20
          -- Do the simplest solution first
          --------------------------------------------------------------------------
          IF  p_z IS NULL
          AND p_m IS NULL
          THEN
             RETURN SDO_GEOMETRY(
                 2001
                ,p_srid
                ,SDO_POINT_TYPE(
                     p_x
                    ,p_y
                    ,NULL
                 )
                ,NULL
                ,NULL
             );
    
          END IF;
    
          --------------------------------------------------------------------------
          -- Step 30
          -- Do the other wilder choices
          --------------------------------------------------------------------------
          IF p_z IS NULL
          AND p_m IS NOT NULL
          THEN
             RETURN SDO_GEOMETRY(
                 3301
                ,p_srid
                ,SDO_POINT_TYPE(
                     p_x
                    ,p_y
                    ,p_m
                 )
                ,NULL
                ,NULL
             );
    
          ELSIF p_z IS NOT NULL
          AND   p_m IS NULL
          THEN
             RETURN SDO_GEOMETRY(
                 3001
                ,p_srid
                ,SDO_POINT_TYPE(
                     p_x
                    ,p_y
                    ,p_z
                 )
                ,NULL
                ,NULL
             );
    
          ELSIF p_z IS NOT NULL
          AND   p_m IS NOT NULL
          THEN
             RETURN SDO_GEOMETRY(
                 4401
                ,p_srid
                ,NULL
                ,SDO_ELEM_INFO_ARRAY(1,1,1)
                ,SDO_ORDINATE_ARRAY(p_x,p_y,p_z,p_m)
             );
    
          ELSE
             RAISE_APPLICATION_ERROR(-20001,'ERR!');
          END IF;
    
       END fast_point;
    
       FUNCTION get_start_point(
          p_input        IN  MDSYS.SDO_GEOMETRY
       ) RETURN MDSYS.SDO_GEOMETRY
       AS
          int_dims PLS_INTEGER;
          int_gtyp PLS_INTEGER;
          int_lrs  PLS_INTEGER;
    
       BEGIN
    
          --------------------------------------------------------------------------
          -- Step 10
          -- Check over incoming parameters
          --------------------------------------------------------------------------
          IF p_input IS NULL
          THEN
             RETURN NULL;
    
          END IF;
    
          --------------------------------------------------------------------------
          -- Step 20
          -- Gather information about the geometry
          --------------------------------------------------------------------------
          int_dims := p_input.get_dims();
          int_gtyp := p_input.get_gtype();
          int_lrs  := p_input.get_lrs_dim();
    
          --------------------------------------------------------------------------
          -- Step 30
          -- Handle point and multipoint inputs
          --------------------------------------------------------------------------
          IF int_gtyp = 1
          THEN
             RETURN p_input;
    
          ELSIF int_gtyp = 5
          THEN
             RETURN SDO_UTIL.EXTRACT(p_input,1);
    
          END IF;
    
          --------------------------------------------------------------------------
          -- Step 40
          -- Return results
          --------------------------------------------------------------------------
          IF int_dims = 2
          THEN
             RETURN fast_point(
                 p_input.SDO_ORDINATES(1)
                ,p_input.SDO_ORDINATES(2)
                ,NULL
                ,NULL
                ,p_input.SDO_SRID
             );
    
          ELSIF  int_dims = 3
          AND int_lrs = 3
          THEN
             RETURN fast_point(
                 p_input.SDO_ORDINATES(1)
                ,p_input.SDO_ORDINATES(2)
                ,NULL
                ,p_input.SDO_ORDINATES(3)
                ,p_input.SDO_SRID
             );
    
          ELSIF  int_dims = 3
          AND int_lrs = 0
          THEN
             RETURN fast_point(
                 p_input.SDO_ORDINATES(1)
                ,p_input.SDO_ORDINATES(2)
                ,p_input.SDO_ORDINATES(3)
                ,NULL
                ,p_input.SDO_SRID
             );
    
          ELSIF  int_dims = 4
          AND int_lrs IN (4,0)
          THEN
             RETURN fast_point(
                 p_input.SDO_ORDINATES(1)
                ,p_input.SDO_ORDINATES(2)
                ,p_input.SDO_ORDINATES(3)
                ,p_input.SDO_ORDINATES(4)
                ,p_input.SDO_SRID
             );
    
          ELSIF  int_dims = 4
          AND int_lrs = 3
          THEN
             RETURN fast_point(
                 p_input.SDO_ORDINATES(1)
                ,p_input.SDO_ORDINATES(2)
                ,p_input.SDO_ORDINATES(4)
                ,p_input.SDO_ORDINATES(3)
                ,p_input.SDO_SRID
             );
    
          ELSE
             RAISE_APPLICATION_ERROR(-20001,'ERR!');
    
          END IF;
    
       END get_start_point;
    
       FUNCTION get_end_point(
          p_input        IN  MDSYS.SDO_GEOMETRY
       ) RETURN MDSYS.SDO_GEOMETRY
       AS
          int_dims PLS_INTEGER;
          int_gtyp PLS_INTEGER;
          int_lrs  PLS_INTEGER;
          int_len  PLS_INTEGER;
    
       BEGIN
    
          --------------------------------------------------------------------------
          -- Step 10
          -- Check over incoming parameters
          --------------------------------------------------------------------------
          IF p_input IS NULL
          THEN
             RETURN NULL;
    
          END IF;
    
          --------------------------------------------------------------------------
          -- Step 20
          -- Gather information about the geometry
          --------------------------------------------------------------------------
          int_dims := p_input.get_dims();
          int_gtyp := p_input.get_gtype();
          int_lrs  := p_input.get_lrs_dim();
          int_len  := p_input.SDO_ORDINATES.COUNT();
    
          --------------------------------------------------------------------------
          -- Step 30
          -- Handle point and multipoint inputs
          --------------------------------------------------------------------------
          IF int_gtyp = 1
          THEN
             RETURN p_input;
          ELSIF int_gtyp = 5
          THEN
             RETURN SDO_UTIL.EXTRACT(
                 p_input
                ,SDO_UTIL.GETNUMELEM(p_input)
             );
          END IF;
    
          --------------------------------------------------------------------------
          -- Step 40
          -- Return results
          --------------------------------------------------------------------------
          IF int_dims = 2
          THEN
             RETURN fast_point(
                 p_input.SDO_ORDINATES(int_len - 1)
                ,p_input.SDO_ORDINATES(int_len)
                ,NULL
                ,NULL
                ,p_input.SDO_SRID
             );
    
          ELSIF  int_dims = 3
          AND int_lrs = 3
          THEN
             RETURN fast_point(
                 p_input.SDO_ORDINATES(int_len - 2)
                ,p_input.SDO_ORDINATES(int_len - 1)
                ,NULL
                ,p_input.SDO_ORDINATES(int_len)
                ,p_input.SDO_SRID
             );
    
          ELSIF  int_dims = 3
          AND int_lrs = 0
          THEN
             RETURN fast_point(
                 p_input.SDO_ORDINATES(int_len - 2)
                ,p_input.SDO_ORDINATES(int_len - 1)
                ,p_input.SDO_ORDINATES(int_len)
                ,NULL
                ,p_input.SDO_SRID
             );
    
          ELSIF  int_dims = 4
          AND int_lrs IN (4,0)
          THEN
             RETURN fast_point(
                 p_input.SDO_ORDINATES(int_len - 3)
                ,p_input.SDO_ORDINATES(int_len - 2)
                ,p_input.SDO_ORDINATES(int_len - 1)
                ,p_input.SDO_ORDINATES(int_len)
                ,p_input.SDO_SRID
             );
    
          ELSIF  int_dims = 4
          AND int_lrs = 3
          THEN
             RETURN fast_point(
                 p_input.SDO_ORDINATES(int_len - 3)
                ,p_input.SDO_ORDINATES(int_len - 2)
                ,p_input.SDO_ORDINATES(int_len)
                ,p_input.SDO_ORDINATES(int_len - 1)
                ,p_input.SDO_SRID
             );
    
          ELSE
             RAISE_APPLICATION_ERROR(-20001,'ERR!');
    
          END IF;
    
       END get_end_point;
    
       FUNCTION is_spaghetti(
           p_input             IN  MDSYS.SDO_GEOMETRY
          ,p_tolerance         IN  NUMBER DEFAULT 0.05
       ) RETURN VARCHAR2
       AS
          num_tolerance    NUMBER := p_tolerance;
          ary_strings      MDSYS.SDO_GEOMETRY_ARRAY := MDSYS.SDO_GEOMETRY_ARRAY();
          ary_starts       MDSYS.SDO_GEOMETRY_ARRAY := MDSYS.SDO_GEOMETRY_ARRAY();
          ary_ends         MDSYS.SDO_GEOMETRY_ARRAY := MDSYS.SDO_GEOMETRY_ARRAY();
          int_count        PLS_INTEGER;
          ary_start_count  MDSYS.SDO_NUMBER_ARRAY := MDSYS.SDO_NUMBER_ARRAY();
          ary_end_count    MDSYS.SDO_NUMBER_ARRAY := MDSYS.SDO_NUMBER_ARRAY();
          ary_inside_count MDSYS.SDO_NUMBER_ARRAY := MDSYS.SDO_NUMBER_ARRAY();
    
       BEGIN
    
          --------------------------------------------------------------------------
          -- Step 10
          -- Check over incoming parameters
          --------------------------------------------------------------------------
          IF p_input IS NULL
          THEN
             RETURN NULL;
    
          ELSIF p_input.get_gtype = 2
          THEN
             RETURN 'FALSE';
    
          ELSIF p_input.get_gtype <> 6
          THEN
             RAISE_APPLICATION_ERROR(-20001,'input gtype must be 2 or 6');
    
          END IF;
    
          IF num_tolerance IS NULL
          THEN
             num_tolerance := 0.05;
    
          END IF;
    
          --------------------------------------------------------------------------
          -- Step 20
          -- Break multistring into single linestrings with nodes
          --------------------------------------------------------------------------
          int_count := SDO_UTIL.GETNUMELEM(p_input);
          ary_strings.EXTEND(int_count);
          ary_starts.EXTEND(int_count);
          ary_ends.EXTEND(int_count);
          ary_start_count.EXTEND(int_count);
          ary_end_count.EXTEND(int_count);
          ary_inside_count.EXTEND(int_count);
          FOR i IN 1 .. int_count
          LOOP
             ary_strings(i) := SDO_UTIL.EXTRACT(p_input,i);
             ary_starts(i)  := get_start_point(ary_strings(i));
             ary_ends(i)    := get_end_point(ary_strings(i));
    
          END LOOP;
    
          --------------------------------------------------------------------------
          -- Step 30
          -- Loop through and count the nodes connections
          --------------------------------------------------------------------------
          FOR i IN 1 .. int_count
          LOOP
             ary_start_count(i)  := 0;
             ary_end_count(i)    := 0;
             ary_inside_count(i) := 0;
    
             FOR j IN 1 .. int_count
             LOOP
                IF i != j
                THEN
                   IF SDO_GEOM.RELATE(
                      ary_starts(i),
                      'DETERMINE',
                      ary_strings(j),
                      num_tolerance
                   ) IN ('TOUCH','CONTAINS','COVERS','ON')
                   THEN
                      ary_start_count(i) := ary_start_count(i) + 1;
    
                   ELSIF SDO_GEOM.RELATE(
                      ary_ends(i),
                      'DETERMINE',
                      ary_strings(j),
                      num_tolerance
                   ) IN ('TOUCH','CONTAINS','COVERS','ON')
                   THEN
                      ary_end_count(i) := ary_end_count(i) + 1;
    
                   ELSIF SDO_GEOM.RELATE(
                      ary_strings(i),
                      'DETERMINE',
                      ary_strings(j),
                      num_tolerance
                   ) IN ('TOUCH','CONTAINS','COVERS','OVERLAPBYINTERSECT')
                   THEN
                      ary_inside_count(i) := ary_inside_count(i) + 1;
    
                   END IF;
    
                END IF;
    
             END LOOP;
    
             IF ary_start_count(i) > 1
             OR ary_end_count(i) > 1
             OR ary_inside_count(i) > 0
             THEN
                RETURN 'TRUE';
             END IF;
    
          END LOOP;
    
          RETURN 'FALSE';
    
       END is_spaghetti;
    
       -----------------------------------------------------------------------------
       -----------------------------------------------------------------------------
       FUNCTION points2segment(
           p_point_one              IN  MDSYS.SDO_POINT_TYPE
          ,p_point_two              IN  MDSYS.SDO_POINT_TYPE
          ,p_srid                   IN  NUMBER
       ) RETURN MDSYS.SDO_GEOMETRY
       AS
       BEGIN
    
          IF ( p_point_one.Z IS NULL AND p_point_two.Z IS NOT NULL )
          OR ( p_point_one.Z IS NOT NULL AND p_point_two.Z IS NULL )
          THEN
             RAISE_APPLICATION_ERROR(
                -20001,
                'both points must have the same number of dimensions, point_one Z is ' ||
                NVL(TO_CHAR(p_point_one.Z),'') ||
                ' and point_two Z is ' ||
                NVL(TO_CHAR(p_point_two.Z),'')
             );
    
          END IF;
    
          IF p_point_one.Z IS NULL
          THEN
             RETURN SDO_GEOMETRY(
                 2002
                ,p_srid
                ,NULL
                ,SDO_ELEM_INFO_ARRAY(1,2,1)
                ,SDO_ORDINATE_ARRAY(p_point_one.X,p_point_one.Y,p_point_two.X,p_point_two.Y)
             );
    
          ELSE
             RETURN SDO_GEOMETRY(
                 3002
                ,p_srid
                ,NULL
                ,SDO_ELEM_INFO_ARRAY(1,2,1)
                ,SDO_ORDINATE_ARRAY(p_point_one.X,p_point_one.Y,p_point_one.Z,p_point_two.X,p_point_two.Y,p_point_two.Z)
             );
    
          END IF;
    
       END points2segment;
    
       -----------------------------------------------------------------------------
       -----------------------------------------------------------------------------
       FUNCTION points2segment(
           p_point_one              IN  MDSYS.SDO_GEOMETRY
          ,p_point_two              IN  MDSYS.SDO_GEOMETRY
       ) RETURN MDSYS.SDO_GEOMETRY
       AS
          int_gtype1 PLS_INTEGER;
          int_dims1  PLS_INTEGER;
          int_gtype2 PLS_INTEGER;
          int_dims2  PLS_INTEGER;
          point_one  MDSYS.SDO_POINT_TYPE;
          point_two  MDSYS.SDO_POINT_TYPE;
    
       BEGIN
    
          int_gtype1 := p_point_one.get_gtype();
          int_dims1  := p_point_one.get_dims();
          int_gtype2 := p_point_two.get_gtype();
          int_dims2  := p_point_two.get_dims();
    
          IF  int_gtype1 = 1
          AND int_gtype2 = 1
          AND int_dims1  = int_dims2
          AND p_point_one.SDO_SRID = p_point_two.SDO_SRID
          THEN
             NULL;  -- Good
    
          ELSE
             RAISE_APPLICATION_ERROR(
                 -20001
                ,'both point objects must be points and have the same number of dimensions and SRIDs'
             );
    
          END IF;
    
          IF int_dims1 = 4
          THEN
             RETURN SDO_GEOMETRY(
                 4402
                ,p_point_one.SDO_SRID
                ,NULL
                ,SDO_ELEM_INFO_ARRAY(1,2,1)
                ,SDO_ORDINATE_ARRAY(
                     p_point_one.SDO_ORDINATES(1)
                    ,p_point_one.SDO_ORDINATES(2)
                    ,p_point_one.SDO_ORDINATES(3)
                    ,p_point_one.SDO_ORDINATES(4)
                    ,p_point_two.SDO_ORDINATES(1)
                    ,p_point_two.SDO_ORDINATES(2)
                    ,p_point_two.SDO_ORDINATES(3)
                    ,p_point_two.SDO_ORDINATES(4)
                )
             );
    
          ELSE
             -- Use the sdo_point_type method for the rest
             IF p_point_one.SDO_POINT IS NOT NULL
             THEN
                point_one := p_point_one.SDO_POINT;
    
             ELSE
                IF int_dims1 = 3
                THEN
                   point_one := SDO_POINT_TYPE(
                       p_point_one.SDO_ORDINATES(1)
                      ,p_point_one.SDO_ORDINATES(2)
                      ,p_point_one.SDO_ORDINATES(3)
                   );
    
                ELSE
                   point_one := SDO_POINT_TYPE(
                       p_point_one.SDO_ORDINATES(1)
                      ,p_point_one.SDO_ORDINATES(2)
                      ,NULL
                   );
    
                END IF;
    
             END IF;
    
             IF p_point_two.SDO_POINT IS NOT NULL
             THEN
                point_two := p_point_two.SDO_POINT;
    
             ELSE
                IF int_dims1 = 3
                THEN
                   point_two := SDO_POINT_TYPE(
                        p_point_two.SDO_ORDINATES(1)
                       ,p_point_two.SDO_ORDINATES(2)
                       ,p_point_two.SDO_ORDINATES(3)
                   );
    
                ELSE
                   point_two := SDO_POINT_TYPE(
                       p_point_two.SDO_ORDINATES(1)
                      ,p_point_two.SDO_ORDINATES(2)
                      ,NULL
                   );
    
                END IF;
    
             END IF;
    
             RETURN points2segment(
                 p_point_one   => point_one
                ,p_point_two   => point_two
                ,p_srid        => p_point_one.SDO_SRID
             );
    
          END IF;
    
       END points2segment;
    
       FUNCTION linear_gap_filler(
           p_input            IN  MDSYS.SDO_GEOMETRY
          ,p_tolerance        IN  NUMBER DEFAULT 0.05
       ) RETURN MDSYS.SDO_GEOMETRY
       AS
          sdo_input     MDSYS.SDO_GEOMETRY := p_input;
          num_tolerance NUMBER;
          int_counter   PLS_INTEGER;
          ary_edges     MDSYS.SDO_GEOMETRY_ARRAY;
          ary_starts    MDSYS.SDO_GEOMETRY_ARRAY;
          ary_ends      MDSYS.SDO_GEOMETRY_ARRAY;
          ary_nearest   MDSYS.SDO_NUMBER_ARRAY;
          ary_distance  MDSYS.SDO_NUMBER_ARRAY;
          num_temp      NUMBER;
          num_nearest   NUMBER;
          int_winner    PLS_INTEGER;
          int_winner2   PLS_INTEGER;
          sdo_point1    MDSYS.SDO_GEOMETRY;
          sdo_point2    MDSYS.SDO_GEOMETRY;
          boo_done      BOOLEAN;
          num_one       NUMBER;
          num_two       NUMBER;
          int_looper    PLS_INTEGER := 1;
    
       BEGIN
    
          --------------------------------------------------------------------------
          -- Step 10
          -- Check over incoming parameters
          --------------------------------------------------------------------------
          IF num_tolerance IS NULL
          THEN
             num_tolerance := 0.05;
    
          END IF;
    
          IF sdo_input IS NULL
          OR sdo_input.get_gtype() <> 6
          THEN
             RETURN sdo_input;
    
          END IF;
    
          IF is_spaghetti(sdo_input,p_tolerance) = 'TRUE'
          THEN
             RETURN sdo_input;
    
          END IF;
    
          <>
          ary_edges     := MDSYS.SDO_GEOMETRY_ARRAY();
          ary_starts    := MDSYS.SDO_GEOMETRY_ARRAY();
          ary_ends      := MDSYS.SDO_GEOMETRY_ARRAY();
          ary_nearest   := MDSYS.SDO_NUMBER_ARRAY();
          ary_distance  := MDSYS.SDO_NUMBER_ARRAY();
    
          --------------------------------------------------------------------------
          -- Step 20
          -- Break multistring into edges and start and end nodes
          --------------------------------------------------------------------------
          int_counter := SDO_UTIL.GETNUMELEM(sdo_input);
          ary_edges.EXTEND(int_counter);
          ary_starts.EXTEND(int_counter);
          ary_ends.EXTEND(int_counter);
          FOR i IN 1 .. int_counter
          LOOP
             ary_edges(i)  := SDO_UTIL.EXTRACT(sdo_input,i);
             ary_starts(i) := get_start_point(ary_edges(i));
             ary_ends(i)   := get_end_point(ary_edges(i));
    
          END LOOP;
    
          --------------------------------------------------------------------------
          -- Step 30
          -- Determine the closest endpoints
          --------------------------------------------------------------------------
          ary_nearest.EXTEND(int_counter);
          ary_distance.EXTEND(int_counter);
          FOR i IN 1 .. int_counter
          LOOP
             num_nearest := NULL;
             int_winner := NULL;
             FOR j IN 1 .. int_counter
             LOOP
                IF j != i
                THEN
                   num_temp := SDO_GEOM.SDO_DISTANCE(
                       ary_edges(i)
                      ,ary_edges(j)
                      ,num_tolerance
                   );
    
                   IF num_nearest IS NULL
                   OR num_temp < num_nearest
                   THEN
                      num_nearest := num_temp;
                      int_winner := j;
    
                   END IF;
    
                END IF;
    
             END LOOP;
    
             ary_nearest(i) := int_winner;
             ary_distance(i) := num_nearest;
    
          END LOOP;
    
          --------------------------------------------------------------------------
          -- Step 40
          -- Find the smallest gap
          --------------------------------------------------------------------------
          int_winner := NULL;
          num_nearest := NULL;
          FOR i IN 1 .. int_counter
          LOOP
             IF num_nearest IS NULL
             OR ary_distance(i) < num_nearest
             THEN
                 int_winner := i;
                 num_nearest := ary_distance(i);
                 int_winner2 := ary_nearest(i);
    
             END IF;
    
          END LOOP;
    
          --------------------------------------------------------------------------
          -- Step 50
          -- Determine the endpoints to connect
          --------------------------------------------------------------------------
          num_one := SDO_GEOM.SDO_DISTANCE(
             get_start_point(ary_edges(int_winner)),
             ary_edges(int_winner2),
             num_tolerance
          );
          num_two := SDO_GEOM.SDO_DISTANCE(
             get_end_point(ary_edges(int_winner)),
             ary_edges(int_winner2),
             num_tolerance
          );
    
          IF ( num_one = 0 AND SDO_GEOM.RELATE(
             get_start_point(ary_edges(int_winner)),
             'ANYINTERACT',
             ary_edges(int_winner2),
             num_tolerance
          ) = 'TRUE' )
          OR ( num_two = 0 AND SDO_GEOM.RELATE(
             get_end_point(ary_edges(int_winner)),
             'ANYINTERACT',
             ary_edges(int_winner2),
             num_tolerance
          ) = 'TRUE' )
          THEN
             sdo_point1 := NULL;
    
          ELSIF num_one < num_two
          THEN
             sdo_point1 := get_start_point(ary_edges(int_winner));
    
          ELSE
             sdo_point1 := get_end_point(ary_edges(int_winner));
    
          END IF;
    
          num_one := SDO_GEOM.SDO_DISTANCE(
             get_start_point(ary_edges(int_winner2)),
             ary_edges(int_winner),
             num_tolerance
          );
          num_two := SDO_GEOM.SDO_DISTANCE(
             get_end_point(ary_edges(int_winner2)),
             ary_edges(int_winner),
             num_tolerance
          );
    
          IF ( num_one = 0 AND SDO_GEOM.RELATE(
             get_start_point(ary_edges(int_winner2)),
             'ANYINTERACT',
             ary_edges(int_winner),
             num_tolerance
          ) = 'TRUE' )
          OR ( num_two = 0 AND SDO_GEOM.RELATE(
             get_end_point(ary_edges(int_winner2)),
             'ANYINTERACT',
             ary_edges(int_winner),
             num_tolerance
          ) = 'TRUE' )
          THEN
             sdo_point2 := NULL;
    
          ELSIF num_one < num_two
          THEN
             sdo_point2 := get_start_point(ary_edges(int_winner2));
    
          ELSE
             sdo_point2 := get_end_point(ary_edges(int_winner2));
    
          END IF;
    
          --------------------------------------------------------------------------
          -- Step 50
          -- Smash together
          --------------------------------------------------------------------------
          IF sdo_point1 IS NULL
          OR sdo_point2 IS NULL
          THEN
             sdo_input := SDO_UTIL.CONCAT_LINES(
                ary_edges(int_winner),
                ary_edges(int_winner2)
             );
    
          ELSE
             sdo_input := SDO_UTIL.CONCAT_LINES(
                SDO_UTIL.CONCAT_LINES(
                   ary_edges(int_winner),
                   points2segment(sdo_point1,sdo_point2)
                ),
                ary_edges(int_winner2)
             );
    
          END IF;
    
          boo_done := TRUE;
          FOR i IN 1 .. int_counter
          LOOP
             IF i NOT IN (int_winner,int_winner2)
             THEN
                sdo_input := SDO_UTIL.APPEND(sdo_input,ary_edges(i));
                boo_done := FALSE;
    
             END IF;
    
          END LOOP;
    
          --------------------------------------------------------------------------
          -- Step 60
          -- Check if valid if returning
          --------------------------------------------------------------------------
          IF sdo_input.get_gtype() = 2
          OR boo_done = TRUE
          THEN
             RETURN sdo_input;
    
          END IF;
    
          int_looper := int_looper + 1;
          GOTO TOP_OF_IT;
    
       END linear_gap_filler;
    
    END dz_gap_fill;
    
  • get all the vertices of a geometry of polygons

    I tried to use sdo_util. GetVertices to retrieve all vertices of a geometry column. Some of the geometry of gType 2007 which contains several elements. GetVertices function seems to give the vertices of the first item only. How can I get all vertices then?

    Published by: 937152 on May 29, 2012 11:56

    Why you all NULL values in your sdo_elem_info_array and sdo_ordinate_array? It's very very bad - see http://docs.oracle.com/cd/E11882_01/server.112/e17766/e12700.htm#sthref3897

    Despite this, I can get all the 'tops' return of the geometry of your sample - notice that I changed your SELECT a little statement.

    jot_test@JOHNOT> create table assessment_parcel_merged (
      2  id number,
      3  geometry sdo_geometry);
    
    Table created.
    
    jot_test@JOHNOT>
    jot_test@JOHNOT> insert into assessment_parcel_merged
      2  (id, geometry)
      3  values
      4  (506833,
      5  mdsys.sdo_geometry(2007,82232,null,
      6  mdsys.sdo_elem_info_array(1,1003,1,13,1003,1,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null),
      7  mdsys.sdo_ordinate_array(632941.3695,5536245.0144,632939.95209944,5536241.97593627,633251.020958124,5536096.38289373,633369.443364573,5536040.95632826,633371.0274,5536043.9168,632941.3695,5536245.0144,631892.0616,5536736.1337,631892.8842984,5536702.62493823,632873.47478553,5536243.66593412,632884.740084103,5536267.81696815,632886.1576,5536270.8559,631892.0616,5536736.1337,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null)));
    
    1 row created.
    
    jot_test@JOHNOT>
    jot_test@JOHNOT> select sdo_geom.validate_geometry_with_context(geometry, 0.0005) as geom_validate
      2  from assessment_parcel_merged;
    
    GEOM_VALIDATE
    ------------------------------------------------------------------------------------------------------------------------
    13033
    
    1 row selected.
    
    jot_test@JOHNOT>
    jot_test@JOHNOT> set null null
    jot_test@JOHNOT> select o.x, o.y
      2  from assessment_parcel_merged a, table(sdo_util.getvertices(a.geometry)) o
      3  where a.id = 506833;
    
             X          Y
    ---------- ----------
     632941.37 5536245.01
    632939.952 5536241.98
    633251.021 5536096.38
    633369.443 5536040.96
    633371.027 5536043.92
     632941.37 5536245.01
    631892.062 5536736.13
    631892.884 5536702.62
    632873.475 5536243.67
     632884.74 5536267.82
    632886.158 5536270.86
    631892.062 5536736.13
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    null       null
    
    50 rows selected.
    

    John

  • How can I remove inner rings of a complex geometry of type SDO_GEOMETRY

    Hi all

    I'm looking for a better way to remove the inner rings of a complex geometry of SDO_GEOMETRY using ORACLE packages. I have a complex geometry, called MAINGEOM, which is to have two elements of disjoint ELEM1, ELEM2, and each item will have a ring of hole/inner completely inside the ELEM1 and ELEM2 respectively.

    I wanted to just delete the two rings of holes / inner of each ELEMs.

    Initially, I planned to collect all the individual rings that are not inside the element using SDO_UTIL. EXTRACT and collect them in a collection, and subsequently all adding them to the first element of the collection to prepare a new geometry.

    FOR rec in c1
    LOOP
    new_g: = SDO_UTIL. APPEND (new_g, rec. GEOM);
    END LOOP;

    I feel, this average gross to solve the problem. I doubt that there should be an existing SDO packages to remove the rings/items inside/required.

    Can you please help me solve this problem anyone and let me know if more information is needed.

    Kind regards
    Kumar

    Kumar,
    As I said in my post, if you extract (idx, 1), you will always get the outer ring, so you don't need to worry about the holes that you will ever extract them.

    Siva

  • Error during processing of a geometry of buffering

    It makes me crazy!

    I have a procedure that compares a standard polygon to other polygons which is held in a number of tables to see if they interact. Some of the geometry that is held in the other tables are of different systems of coordinates, so before I compare I translate the geoms. It all works very well.

    However, if I have the geometry buffer before calling the procedure, I get all sorts of errors to do with transformation. No matter who successfully translated polygons in the buffer? and if so, how

    Thank you very much

    Chris

    The buffer of errors form is essentially as follows: (copy a paste that and see if you get the error):
    SELECT sdo_cs.transform(SDO_GEOMETRY(2003,81989,NULL,SDO_ELEM_INFO_ARRAY(1,1005,18,1,2,1,3,2,2,7,2,1,9,2,2,13,2,1,15,2,2,19,2,1,21,2,2,25,2,1,27,2,2,31,2,1,33,2,2,37,2,1,39,2,2,43,2,1,45,2,2,49,2,1,51,2,2),SDO_ORDINATE_ARRAY(351184.93,490373.18,351177.99,490370.87,351144.85,490352.23,351121.08,490322.56,351117.77,490316.27,351106.4,490264.5,351123.08,490214.19,351126.39,490209.23,351162.4,490176.56,351209.57,490164.74,351215.85,490164.74,351233.51,490166.31,351250.61,490170.97,351259.54,490174.28,351294.62,490196.48,351317.67,490231.01,351318.99,490234.32,351326.03,490267.66,351321.47,490301.43,351319.49,490307.71,351304.11,490337.66,351279.65,490360.8,351276.67,490362.79,351236.53,490378.44,351193.53,490375.74,351188.9,490374.41,351186.91,490373.82,351184.93,490373.18)),27700)
    OF THE DOUBLE

    If I change this to a complex form a polygon it works fine (not sure if it is just to change the comp info?):

    SELECT sdo_cs.transform(SDO_GEOMETRY(2003,81989,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(351184.93,490373.18,351177.99,490370.87,351144.85,490352.23,351121.08,490322.56,351117.77,490316.27,351106.4,490264.5,351123.08,490214.19,351126.39,490209.23,351162.4,490176.56,351209.57,490164.74,351215.85,490164.74,351233.51,490166.31,351250.61,490170.97,351259.54,490174.28,351294.62,490196.48,351317.67,490231.01,351318.99,490234.32,351326.03,490267.66,351321.47,490301.43,351319.49,490307.71,351304.11,490337.66,351279.65,490360.8,351276.67,490362.79,351236.53,490378.44,351193.53,490375.74,351188.9,490374.41,351186.91,490373.82,351184.93,490373.18)),27700)
    OF THE DOUBLE

    SDO buffer usually generate arcs in the result (etype = 1005) for projected coordinate systems. If you use the geometry of the buffer in sdo_cs.transform, you might encounter problems.
    You can use SDO_GEOM. Funtion SDO_ARC_DENSIFY before turning them in geodetic coordinates, and then perform spatial operations on geometries that result.

    6.2.5 Other Considerations and Requirements with Geodetic Data (11.2)
    
    The following geometries are not permitted if a geodetic coordinate system is used or if any transformation is being performed (even if the transformation is from one projected coordinate system to another projected coordinate system):
    
        * Circles
        * Circular arcs
    
    Geodetic coordinate system support is provided only for geometries that consist of points or geodesics (lines on the ellipsoid). If you have geometries containing circles or circular arcs in a projected coordinate system, you can densify them using the SDO_GEOM.SDO_ARC_DENSIFY function (documented in Chapter 24) before transforming them to geodetic coordinates, and then perform Spatial operations on the resulting geometries.
    

    Or you can try everything first to transform the geometry and then generate the buffer and then issue your sql queries.

    Jack

    Published by: Jack Wang, November 9, 2010 19:03

  • Strange problem (bug?) with access to a specific geometry

    We have a database with hundreds of thousands of polygons (among others).
    We have a number of queries that retrieve polygons in a (rectangular) area chosen by the user.

    In general, everything works fine.

    However, in trying to retrieve data of a particular area, we found that oracle kept throwing at the end of the file (03113)
    or 'no more to read shooting Data' exception and disconnection.

    Our first was that the region contained too many data [we often get this exception when you try to return large amounts of data, but it's another

    question]. But no, we could limit the area such that it contained only a handful of polygons and he always threw the exception.

    After more testing, we were able to narrow the problem down to a single geometry.

    It validates ok, and geo raptor in sql Developer, it can display ok (it is a torus lying, somewhat like a race track).
    However, do not attempts to run the query on the matter.

    We have reduced the query as follows:

    INSERT INTO RDTESTIDS
    SELECT RDTestTA.Polygon
    OF RDTestTA, RDTestPoly
    WHERE RDTestTA.Polygon = RDTestPoly.ID
    AND (SDO_ANYINTERACT)
    RDTestPoly.geometry,
    SDO_GEOMETRY (2003, NULL, NULL,)
    SDO_elem_info_array (1,1003,3),
    SDO_ordinate_array (531250,163965,531310,164000)
    )
    ) = "TRUE";

    Where:

    RDTestTA is an array that contains two fields: TAID (NUMBER) and POLYGON (NUMBER)
    RDTestPoly is an array that contains two fields: ID (NUMBER) and GEOMETRY (SDO_GEOMETRY)
    RDTestIDs is a table containing the unique field: ID (NUMBER)


    Success of this operation for each geometry, we met so far except the 'circuit '.
    and we do not know what could be the cause of the problem.


    Curiously, if we remove the "INSERT INTO RDTestIDs" or joining with RDTestTA, it works!

    Suggestions of the ad hoc to avoid the problem by rewriting etc. are not really what is needed here
    -He should know what he is this geometry that is causing Oracle to fail
    where it occurs with other geometries and/or queries we encounter in the future.


    Any help to fix this would be greatly appreciated.

    Richard



    ---------------------------

    The complete example that produces the error can be recreated using the following script:


    -Create the tables RDTestPoly and RDTestTA

    CREATE TABLE 'RDTESTPOLY1 '.
    ('ID' NUMBER (38.0),)
    "GEOMETRY" 'MDSYS. "" SDO_GEOMETRY. "
    ) ;

    CREATE TABLE 'RDTESTTA1 '.
    ("TAMTAM" NUMBER (38.0) BY DEFAULT, 0,)
    "POLYGON" NUMBER (38.0) DEFAULT 0
    ) ;

    -The index, including the spatial index on a geometry

    INSERT INTO VALUES USER_SDO_GEOM_METADATA ("rdtestpoly1", "geometry",
    MDSYS. SDO_DIM_ARRAY (MDSYS. SDO_DIM_ELEMENT ('X', 0, 800000, 0.00001),
    MDSYS. SDO_DIM_ELEMENT ('Y', 0, 1300000, 0.00001)), NULL);

    CREATE AN INDEX UNIQUE 'PK_RDTESTPOLY1' ON 'RDTESTPOLY1' ('ID');

    CREATE INDEXES 'RDTESTPOLY1_IDX' ON 'RDTESTPOLY1' ("GEOMETRY")
    INDEXTYPE IS 'MDSYS. "" SPATIAL_INDEX SETTINGS "("sdo_indx_dims = 2 layer_gtype = POLYGON");

    CREATE AN INDEX UNIQUE 'PK_RDTESTTA1' ON 'RDTESTTA1' ('TAMTAM");

    -Insert geometry "Hippodrome" of the problem and the line in RDTestTA

    INSERT INTO RDTESTTA1 (tamtam, polygon)
    VALUES (1,2410547);

    INSERT INTO RDTESTPOLY1 (id, geometry)
    VALUES (2410547, MDSYS. SDO_GEOMETRY (2003, NULL, NULL,)
    MDSYS. SDO_ELEM_INFO_ARRAY (1,1003,1,293,2003,1),
    MDSYS. SDO_ORDINATE_ARRAY (531265.19,163994.89,531266.05,163993.75,531267.35,163992.25,531268.7,163990.85,
    531270.2,163989.5,531271.75,163988.25,531273.4,163987.15,531274.75,163986.4,531276.15,163985.7,531277.6,
    163985.05,531278.95,163984.5,531280.3,163984.0,531281.65,163983.55,531283.65,163983.1,531285.6,163982.8,
    531287.65,163982.6,531289.05,163982.55,531290.45,163982.6,531291.85,163982.7,531293.0,163982.8,531293.81,
    163982.95,531295.2,163983.2,531297.43,163983.71,531300.0,163984.3,531314.5,163987.75,531353.55,163996.65,
    531356.55,163997.45,531357.25,163997.75,531358.0,163998.0,531358.7,163998.3,531359.6,163998.6,531360.45,
    163998.95,531361.3,163999.35,531363.1,164000.0,531365.8,164001.7,531366.8,164002.45,531367.8,164003.25,
    531368.71,164004.06,531368.75,164004.1,531369.88,164005.29,531370.65,164006.1,531371.5,164007.15,531372.25,
    164008.13,531372.45,164008.4,531373.35,164009.65,531374.2,164011.0,531375.05,164012.45,531375.49,164013.28,
    531375.85,164013.95,531376.55,164015.55,531377.1,164017.05,531377.6,164018.6,531378.0,164020.15,531378.3,
    164021.65,531378.5,164023.2,531378.53,164023.51,531378.65,164024.7,531378.75,164026.25,531378.8,164027.8,
    531378.77,164028.78,531378.75,164029.3,531378.6,164030.7,531378.45,164032.05,531378.15,164033.4,531377.85,
    164034.5,531377.45,164035.55,531377.0,164036.6,531376.74,164037.16,531376.4,164037.9,531375.75,164039.2,
    531375.05,164040.45,531374.5,164041.5,531373.9,164042.5,531373.25,164043.5,531372.5,164044.55,531371.7,
    164045.6,531370.9,164046.6,531370.05,164047.65,531369.15,164048.65,531368.2,164049.6,531367.2,164050.5,
    531366.1,164051.35,531365.0,164052.1,531363.65,164052.8,531362.25,164053.45,531360.85,164054.05,531359.4,
    164054.65,531357.95,164055.2,531356.45,164055.75,531354.8,164056.2,531353.1,164056.55,531351.35,164056.8,
    531350.05,164056.95,531348.65,164057.05,531347.3,164057.05,531346.05,164056.95,531344.75,164056.75,
    531343.5,164056.5,531339.0,164055.55,531333.9,164054.3,531325.95,164052.55,531319.63,164051.06,531316.03,
    164050.21,531284.3,164042.75,531282.9,164042.5,531280.2,164041.8,531278.75,164041.35,531277.4,164040.8,
    531276.0,164040.2,531274.9,164039.6,531273.8,164038.95,531272.75,164038.3,531271.55,164037.5,531270.4,
    164036.65,531269.3,164035.75,531268.35,164034.8,531267.5,164033.75,531266.65,164032.65,531265.75,164031.4,
    531264.9,164030.15,531264.1,164028.8,531263.35,164027.3,531262.7,164025.75,531262.05,164024.15,531261.4,
    164022.75,531260.85,164021.3,531260.35,164019.85,531260.0,164018.55,531259.7,164017.2,531259.5,164015.85,
    531259.35,164014.5,531259.3,164013.15,531259.3,164011.8,531259.4,164010.35,531259.55,164008.95,531259.69,
    164008.02,531259.75,164007.6,531260.35,164004.6,531260.8,164003.15,531261.2,164002.05,531261.6,164001.05,
    531262.05,164000.0,531262.85,163998.4,531263.8,163996.85,531264.85,163995.35,531265.19,163994.89,531303.15,
    163987.96,531295.62,163986.17,531293.8,163985.75,531293.2,163985.7,531292.5,163985.6,531291.7,163985.55,
    531289.0,163985.55,531288.0,163985.65,531286.95,163985.75,531286.8,163985.75,531286.15,163985.85,531285.5,
    163985.9,531284.8,163986.0,531284.15,163986.15,531283.5,163986.25,531283.25,163986.3,531281.95,163986.6,
    531281.3,163986.8,531280.4,163987.15,531277.8,163988.15,531276.55,163988.75,531275.45,163989.35,531274.4,
    163990.0,531273.35,163990.7,531272.2,163991.6,531271.1,163992.6,531270.05,163993.65,531269.53,163994.23,
    531269.2,163994.6,531268.45,163995.55,531267.7,163996.55,531266.9,163997.7,531266.2,163998.8,531265.55,
    164000.0,531264.35,164002.35,531264.15,164002.7,531264.0,164003.1,531263.85,164003.45,531263.55,164004.55,
    531263.45,164005.1,531263.15,164006.55,531262.65,164009.15,531262.55,164009.7,531262.5,164010.3,531262.45,
    164010.85,531262.35,164012.45,531262.35,164013.75,531262.4,164014.3,531262.45,164014.9,531262.55,164015.8,
    531262.7,164016.7,531262.9,164017.55,531263.1,164018.35,531263.35,164019.15,531263.6,164019.9,531263.65,
    164020.07,531263.75,164020.4,531263.85,164020.9,531264.05,164021.35,531264.3,164022.05,531265.0,164023.45,
    531265.8,164025.25,531266.6,164026.95,531267.0,164027.75,531267.45,164028.55,531267.9,164029.25,531268.4,
    164029.95,531268.9,164030.6,531269.4,164031.3,531269.95,164031.95,531270.53,164032.57,531271.1,164033.05,
    531271.65,164033.55,531272.3,164034.05,531273.15,164034.75,531274.1,164035.4,531275.0,164036.0,531275.9,
    164036.55,531277.8,164037.55,531279.4,164038.25,531280.25,164038.6,531281.0,164038.8,531281.8,164039.0,
    531282.6,164039.15,531291.52,164041.25,531299.66,164043.15,531306.3,164044.71,531312.28,164046.12,531318.35,
    164047.54,531325.2,164049.15,531333.29,164051.05,531342.25,164053.15,531344.0,164053.45,531345.75,164053.65,
    531347.5,164053.75,531348.65,164053.75,531349.85,164053.7,531351.05,164053.6,531352.75,164053.35,531354.45,
    164052.95,531356.1,164052.45,531357.55,164051.95,531358.95,164051.35,531360.35,164050.7,531361.35,164050.25,
    531362.3,164049.8,531363.25,164049.3,531364.1,164048.8,531364.9,164048.25,531365.7,164047.65,531366.65,
    164046.8,531367.55,164045.85,531368.35,164044.85,531369.55,164043.15,531370.1,164042.25,531370.85,164041.15,
    531371.6,164040.0,531372.25,164038.85,531372.75,164037.9,531373.65,164036.0,531374.7,164033.75,531375.0,
    164032.75,531375.25,164031.9,531375.7,164025.5,531375.6,164024.65,531375.5,164023.85,531375.4,164023.0,
    531375.3,164022.1,531375.15,164021.2,531374.95,164020.3,531374.55,164019.1,531374.35,164018.55,531374.05,
    164017.75,531373.45,164016.25,531373.0,164015.35,531372.0,164013.55,531371.45,164012.6,531370.9,164011.7,
    531369.8,164010.0,531368.7,164008.4,531368.0,164007.7,531367.3,164007.05,531366.55,164006.4,531365.85,
    164005.8,531364.35,164004.6,531363.45,164004.0,531362.6,164003.4,531361.7,164002.85,531360.3,164002.05,
    531359.6,164001.7,531358.15,164001.0,531356.65,164000.4,531355.3,164000.0,531354.42,163999.69,531353.43,
    163999.51,531347.11,163998.19,531346.9,163998.15,531341.48,163996.8,531337.5,163995.8,531334.61,163995.15,
    531327.82,163993.61,531322.22,163992.35,531316.05,163990.95,531314.9,163990.75,531308.53,163989.24,531303.15,
    163987.96)));

    -Finally, to create the output table to store IDs

    CREATE TABLE 'RDTESTIDS1 '.
    (NUMBER of 'IDENTIFIER'
    );



    -Now, for the test question itself
    -Leading to end-of-file on communication channel error 3113

    DELETE FROM RDTESTIDS1;

    INSERT INTO RDTESTIDS1
    SELECT rdtestta1.polygon
    OF rdtestta1, rdtestpoly1
    WHERE rdtestta1.polygon = rdtestpoly1.id
    AND sdo_anyinteract (geometry, SDO_Geometry (2003, NULL, NULL, SDO_elem_info_array (1,1003,3),))
    SDO_ordinate_array (531250,163965,531310,164000))

    ) = "TRUE";

    All I can say is that I have improved my 10.2.0.1 precisely because I often got what experienced you:

    However, in trying to retrieve data of a particular area, we found Oracle kept throwing the exception of 'No more to read shooting Data' or end of file (03113) and disconnect.

    In other words, the dreaded ORA-03113 error.

    So, I'm afraid that I can't test your problem on 10.2.0.1.

    But I can confirm, as Luc, it works on 10.2.0.2 Patch 18 on Windows XP.

    I would recommend you get down the relevant updated version + its patches for your operating system from Metalink.

    concerning
    Simon

  • SDO_GEOM. VALIDATE_GEOMETRY_WITH_CONTEXT for the validation of the polygon geometry

    Hello

    I have a validation of the geometry of the polygon on a table SCHEMA. TABLE with the GEOM field, where the geometry is stored.

    Can someone help me with an example SQL sentence to fill my SCHEMA. Table with all the errors that occurred in the SCHEMA VALIDITY. TABLE?

    Thank you!


    Dejan

    Hello

    -First create your table schema.validity
    create table schema.validity (ID number, varchar2 (200)) of validity;
    -Insert values into it
    insert into schema.validity (id, validity) select id, sdo_geom.validate_geometry_with_context (geom, 0,000005) from schema.table;
    -Updated the values inside
    updated schema.validity an a.validity = set (select sdo_geom.validate_geometry_with_context (b.geometry, 0,000005) in schema.table b where a.id = b.id);
    -Remove the real case of table schema.validity
    delete from schema.validity where a.validity = 'TRUE';

    Hope this helps
    Baris

  • Preview.app stuck on the first page of the PDF in single page mode

    I regularly Preview.app view PDF files and want to use the "Single Page" function to display an entire page at one time. I have 'Single Page' display set as the default behavior.

    Lately when I open a PDF file, they properly open the first page, but I am unable to navigate to another page via the drop-down page, touch up/down arrow. If the PDF file has a table of contents, I am able to go beyond the first page through it and then proceed to navigate normally. If it is not a table of contents, the only solution is to continuous scrolling mode and continue to navigate beyond the first page.

    It's very annoying! Unfortunately, I can't remember where this started happening. It could be when I upgraded to MacOS Sierra, but I can't confirm.

    Everyone else see this behavior?

    Hold down the Option/ALT key, then use the cursor to the TOP or to the BOTTOM of the key.

  • to upgrade my iMac yosemite Sierra do I need save iWork applications first and upgrade etc.?

    To upgrade my iMac Yosemite Sierra can I first of all backup and upgrade the iWork etc. applications. ?

    He can't make a backup.  You don't need to do anything else.

  • Date page does not appear first drop the bar down

    Just downloaded the new ios and found that the Notification Center page appears first when you use the new bar drop down. I have to keep pulling down then drag to the right to display date apps, weather, news, etc.

    How can I configure it so that I can view the main page widget first, when you pull down the drop to the low bar and not the notification page?

    Thank you!

    Just drag to the right at the beginning.  No need to blow first.

Maybe you are looking for