Программное обеспечение для генерации диаграмм Венна из спецификации RCC (8) или аналогичное

Когда я поразил это ограничение, я изменил тип на uniqueidentifier

24
задан sharky 4 September 2014 в 02:51
поделиться

1 ответ

Я не знаю ни одного программного обеспечения, которое может генерировать такие диаграммы. Однако, если бы мне пришлось решать вашу проблему, я бы, вероятно, изучил возможность использования Scalable Vector Graphics (SVG) . Я думаю, что вы можете перевести DSL для RCC в SVG XML, а затем вы можете отрендерить его (возможно, в веб-браузере). Вы можете легко найти примеры в Интернете, выполнив поиск по запросу «svg venn diagram». Хорошим примером является здесь : вот диаграмма, которую я сгенерировал с этого сайта

enter image description here

и вот соответствующий код SVG (также с сайта ):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg 
    height="150" 
    width="200" 
    xmlns="http://www.w3.org/2000/svg" 
    xmlns:svg="http://www.w3.org/2000/svg" 
    xmlns:xlink="http://www.w3.org/1999/xlink">    
<title >WIBR Venn diagram</title>
    <ellipse 
        cx="141.795128105731" 
        cy="75" 
        id="circle2" 
        rx="58.2048718942687" 
        ry="58.2048718942687" 
        style="fill: gray; fill-opacity: 0.5; stroke: black; stroke-width: 1; stroke-opacity: 1" />
    <ellipse 
        cx="67.2091969126074" 
        cy="75" id="circle1" 
        rx="67.2091969126074" ry="67.2091969126074" 
        style="fill: darkgray; fill-opacity: 0.5; stroke: black; stroke-width: 1; stroke-opacity: 1"/>
</svg>

Существует также инструментарий Apache для SVG под названием Batik , который должен поддерживать отображение, генерацию или манипулирование SVG.

Другой вариант - использовать TikZ & amp; PGF с LaTeX: там у вас есть мощные макросы, которые позволяют программно размещать фигуры, а рендеринг выполняется LaTeX. Вот пример:

\documentclass[a4paper,10pt]{article}

\usepackage{tikz}
\usetikzlibrary{shapes,calc}

\begin{document}

\pagestyle{empty}

\begin{tikzpicture}

    \node (TPP) {X TPP Y};

    \node
        [ circle,
            draw,
            minimum width=2cm,
            label={[label distance=-0.7cm]145:X},
        ] (X) [right of=TPP,xshift=1cm] {};

    \node
        [ circle,
            draw,
            minimum width=1cm,
            anchor=south east,
        ] (Y) at (X.south east) {Y}; 

\end{tikzpicture}

\end{document}

, который производит следующее (т. Е. Отношение TPP RCC8):

enter image description here

Вы можете видеть из кода LaTeX что вы можете нарисовать круг Y на юго-западе от X (X.south west), говоря, что якорь Y также на юго-западе (anchor=south west). Вы можете найти более сложный пример здесь , а некоторые дополнительные обсуждения здесь .

Хотя это еще не алгоритм компоновки, который рисует для вас отношение RCC8, я думаю, вы можете определить макрос LaTeX, который переводит отношения RCC8 в макросы PGF / TikZ. Недостатком является то, что вы должны затем скомпилировать код LaTeX.

Надеюсь, это поможет и удачи!

2
ответ дан 29 November 2019 в 00:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: